Opsi apa yang perlu saya gunakan find
untuk mengecualikan file tersembunyi?
.hidden/visible.txt
?
Opsi apa yang perlu saya gunakan find
untuk 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 findnh
yang 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/file
tetapi tidak ~/.hiddendir/.superhiddenfile
.
findnh ~/.hiddendir/
, saya tidak mendapatkan apa-apa. Selain itu, bagaimana bedanya dengan ! -path '*/.*'
dan find … | grep -v '/\.'
?
fd
Gunakan fd
, alternatif yang sederhana, jauh lebih cepat dan ramah pengguna find
. Secara default, ini:
.gitignore
, secara default.Periksa analisis Tolok Ukur .
ls
kecuali diminta secara khusus: mereka adalah file yang benar-benar biasa dalam segala hal, hanya saja yangls
memungkinkan Anda mengabaikannya secara default.