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.


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.


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

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


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 .*

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.


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.


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"

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 "^\./\."


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"

-1

Anda dapat mencoba :

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

^ menunjukkan ini adalah awal konten dengan regexp


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.