Parsing lstidak pernah merupakan ide yang bagus, tetapi apa yang Anda coba akan berhasil jika Anda menggunakan jangkar ^untuk menunjukkan awal pertandingan. ls -la | grep '^\.'
devnull
3
Tidak itu tidak akan, nama file bukan awal dari baris dengan flag -l. ls -la | awk '$9 ~ /^\./'akan.
Jika Anda ingin mem-parsing lsoutput, Anda harus menambahkan ^di awal regex dan jangan gunakan -lopsi. Penggunaan -lmenyebabkan setiap output baris dimulai dengan informasi izin file atau folder, bukan nama file atau folder. Jadi sebaiknya gunakan seperti ini:
ls -Ad | grep '^\.'
Atau Anda dapat melakukannya dengan printfbash builtin:
printf "%s\n" .*
Jika Anda menggunakan zsh, Anda dapat menggunakan:
Ini akan mencantumkan semua file yang namanya dimulai dengan titik dan itu bukan .juga bukan ...
Perhatikan bahwa jika Anda ingin menyalurkan output lske grep(yang, seperti yang ditunjukkan oleh devnull , tidak pernah merupakan ide yang baik), pastikan Anda menggunakan \lsatau command lskarena jika lsalias menampilkan output berwarna (seperti pada Debian misalnya) , outputnya berisi urutan pelarian ANSI untuk membuat output berwarna, yang akan meningkatkan Anda grepjika polanya berlabuh di awal baris.
Anda dapat menggunakan -A(bukan -a) untuk mengabaikan ., ...
OJFord
@ OJFord + -Aberbeda dari -auntuk direktori yang lsturun ke, tetapi keduanya (sama-sama) diabaikan dan tidak berguna untuk nama yang ditentukan pada baris perintah dengan -defek. Juga jika lsalias --color=auto maka perpipaan tidak apa-apa; hanya --color=alwaysatau --colormenyebabkan masalah.
dave_thompson_085
0
Solusi val0x00ff benar-benar bagus, tetapi ia lupa direktori tersembunyi.
Jika Anda ingin file tersembunyi dan direktori tersembunyi , tanpa. dan ..:
Saran Anda gagal pada VMware ESXi (tidak ada daftar file dan tidak ada direktori) dan juga gagal di Linux (dengan maxdepth> 1, ia juga mencantumkan file dalam direktori yang dimulai dengan a.), Tetapi ini berfungsi pada Linux dan ESXi: find . \( -type f -o -type d \) -name '\.*' -print; berlaku di maxdepthmana diperlukan.
Jeroen Wiert Pluimers
0
Di bawah ini banyak yang kompak dan mendukung banyak varian
1) Menampilkan file tersembunyi, direktori dan sub-direktori
find . | grep "^\./\."
2) Tampilkan direktori dan sub-direktori tersembunyi saja
find . -type d | grep "^\./\."
3) Tampilkan file yang tersembunyi hanya di direktori saat ini dan sub-direktori
find . -type f | grep "^\./\."
4) Tampilkan file dan direktori tersembunyi di folder saat ini
find .-maxdepth 1-type f -name '\.*'-print
find .-maxdepth 1 \( -type f -o -type d \) -name '\.*'-print
Tentu saja Anda dapat menggunakan maxdepthnilai yang berbeda atau menghapusnya sepenuhnya. Sangat membantu jika Anda ingin menjelajahi antara direktori ( -type d) atau file biasa ( type f) atau keduanya, dan bergabung dengan fungsi lain seperti:
Saya melihat jawaban sebelumnya, itu bukan duplikat, dan pasti "ls-a" dan "ls -Ad" tidak memiliki arti yang sama. "-a" berarti daftar semua termasuk file / direktori dimulai dengan "." -A Berarti daftar semua kecuali "." , ".." dan konten direktori.
ls
tidak pernah merupakan ide yang bagus, tetapi apa yang Anda coba akan berhasil jika Anda menggunakan jangkar^
untuk menunjukkan awal pertandingan.ls -la | grep '^\.'
ls -la | awk '$9 ~ /^\./'
akan.Jawaban:
ls -ld .*
akan melakukan apa yang Anda inginkan.sumber
Harus berfungsi jika Anda ingin mencantumkan setiap file tersembunyi di dalam hierarki direktori.
sumber
Jika Anda ingin mem-parsing
ls
output, Anda harus menambahkan^
di awal regex dan jangan gunakan-l
opsi. Penggunaan-l
menyebabkan setiap output baris dimulai dengan informasi izin file atau folder, bukan nama file atau folder. Jadi sebaiknya gunakan seperti ini:Atau Anda dapat melakukannya dengan
printf
bash builtin:Jika Anda menggunakan
zsh
, Anda dapat menggunakan:sumber
Berikut adalah dua cara lain untuk menemukan file tersembunyi saja.
atau
Gunakan
-maxdepth
untuk menentukan seberapa jauh Anda ingin mencari di pohon direktori.sumber
Peningkatan pada jawaban Flup :
Ini akan mencantumkan semua file yang namanya dimulai dengan titik dan itu bukan
.
juga bukan..
.Perhatikan bahwa jika Anda ingin menyalurkan output
ls
kegrep
(yang, seperti yang ditunjukkan oleh devnull , tidak pernah merupakan ide yang baik), pastikan Anda menggunakan\ls
ataucommand ls
karena jikals
alias menampilkan output berwarna (seperti pada Debian misalnya) , outputnya berisi urutan pelarian ANSI untuk membuat output berwarna, yang akan meningkatkan Andagrep
jika polanya berlabuh di awal baris.sumber
-A
(bukan-a
) untuk mengabaikan.
,..
.-A
berbeda dari-a
untuk direktori yangls
turun ke, tetapi keduanya (sama-sama) diabaikan dan tidak berguna untuk nama yang ditentukan pada baris perintah dengan-d
efek. Juga jikals
alias--color=auto
maka perpipaan tidak apa-apa; hanya--color=always
atau--color
menyebabkan masalah.Solusi val0x00ff benar-benar bagus, tetapi ia lupa direktori tersembunyi.
Jika Anda ingin file tersembunyi dan direktori tersembunyi , tanpa. dan ..:
sumber
find . \( -type f -o -type d \) -name '\.*' -print
; berlaku dimaxdepth
mana diperlukan.Di bawah ini banyak yang kompak dan mendukung banyak varian
1) Menampilkan file tersembunyi, direktori dan sub-direktori
find . | grep "^\./\."
2) Tampilkan direktori dan sub-direktori tersembunyi saja
find . -type d | grep "^\./\."
3) Tampilkan file yang tersembunyi hanya di direktori saat ini dan sub-direktori
find . -type f | grep "^\./\."
4) Tampilkan file dan direktori tersembunyi di folder saat ini
find . -maxdepth 1 | grep "^\./\."
sumber
Anda dapat mencoba:
Tentu saja Anda dapat menggunakan
maxdepth
nilai yang berbeda atau menghapusnya sepenuhnya. Sangat membantu jika Anda ingin menjelajahi antara direktori (-type d
) atau file biasa (type f
) atau keduanya, dan bergabung dengan fungsi lain seperti:(mis. waktu modifikasi terakhir, berdasarkan contoh @piroux - dilengkapi oleh @ jeroen-wiert-pluimer )
sumber
Anda dapat mencoba :
^ menunjukkan ini adalah awal konten dengan regexp
sumber