hanya tampilkan file yang dimulai dengan. (tersembunyi)

11

Saya mencoba menampilkan hanya file yang tersembunyi tetapi tidak tahu bagaimana melakukannya.

Itu bekerja (tetapi mencocokkan juga titik-titik di tempat lain)

ls -la | grep '\.'

Sedang mencoba menambahkan ^tetapi tidak menemukan solusinya.

pengguna3014282
sumber
1
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.
yoonix

Jawaban:

18

ls -ld .* akan melakukan apa yang Anda inginkan.

Flup
sumber
4
find . -type f -name '\.*' -print 

Harus berfungsi jika Anda ingin mencantumkan setiap file tersembunyi di dalam hierarki direktori.

periket2000
sumber
2

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:

print -l .*
cuonglm
sumber
1

Berikut adalah dua cara lain untuk menemukan file tersembunyi saja.

find . -maxdepth 1 -name ".*" -type f -ls

atau

find . -maxdepth 1 -name ".*" -type f -printf "%P \n"

Gunakan -maxdepthuntuk menentukan seberapa jauh Anda ingin mencari di pohon direktori.

Valentin Bajrami
sumber
1

Peningkatan pada jawaban Flup :

ls -lad .[!.]* ..?*

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.

Joseph R.
sumber
1
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 ..:

find -maxdepth 1 -regex '\./\..+' -printf "%P\n"
piroux
sumber
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 | grep "^\./\."

GLK
sumber
0

Anda dapat mencoba:

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:

(mis. waktu modifikasi terakhir, berdasarkan contoh @piroux - dilengkapi oleh @ jeroen-wiert-pluimer )

find . -maxdepth 1 \( -type f -o -type d \) -name '\.*' -exec stat -c %y {} \; -printf "%P\t"
azbarcea
sumber
-1

Anda dapat mencoba :

ls -a |grep -E  "^\."

^ menunjukkan ini adalah awal konten dengan regexp

Lingjing Prancis
sumber
1
Duplikat jawaban lain dari 3 tahun yang lalu ...
Jeff Schaller
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.
Lingjing France