Opsi apa yang perlu saya gunakan finduntuk mengecualikan file tersembunyi?
.hidden/visible.txt?
Opsi apa yang perlu saya gunakan finduntuk mengecualikan file tersembunyi?
.hidden/visible.txt?
Jawaban:
Saya menemukan ini di sini :
find . \( ! -regex '.*/\..*' \) -type f -name "whatever"
\( ! -name '.*' \)?
\( ! -path '*/.*' \)akan.
Sepertinya negasi pola glob tidak diketahui dengan baik. Jadi Anda bisa menggunakan:
find . -name "[!.]*"
Ini tidak menjawab pertanyaan Anda, tetapi untuk tugas menemukan file yang tidak disembunyikan saya ingin membiarkan find menemukan semua file kemudian filter dengan grep.
find . -type f | grep -v '/\.'
Mirip dengan pendekatan Anda tetapi mungkin sedikit lebih sederhana.
Saya menulis sebuah skrip bernama findnhyang saya percaya menangani kasus tepi tertentu lebih baik daripada jawaban untuk pertanyaan ini yang saya dapat temukan di web.
#!/bin/bash
declare -a paths
while [ $# -ne 0 ]; do
case "$1" in -*) break ;; esac
paths+=("$1")
shift
done
find "${paths[@]}" \( -name . -o -name .. -o \! \( -name '.*' -prune \) \) "$@"
Misalnya, Anda dapat menemukan file dan direktori yang tidak tersembunyi di dalam direktori tersembunyi yang ditentukan secara eksplisit dengan perintah seperti findnh ~/.hiddendir/, yang akan ditampilkan ~/.hiddendir/filetetapi tidak ~/.hiddendir/.superhiddenfile.
findnh ~/.hiddendir/, saya tidak mendapatkan apa-apa. Selain itu, bagaimana bedanya dengan ! -path '*/.*'dan find … | grep -v '/\.'?
fdGunakan fd, alternatif yang sederhana, jauh lebih cepat dan ramah pengguna find. Secara default, ini:
.gitignore, secara default.Periksa analisis Tolok Ukur .
lskecuali diminta secara khusus: mereka adalah file yang benar-benar biasa dalam segala hal, hanya saja yanglsmemungkinkan Anda mengabaikannya secara default.