Saya perlu membuat daftar file dari volume disk. Beberapa direktori (semua direktori tersembunyi di bawah direktori root) memiliki izin aneh yang menyebabkan find komplain.
Saya mencoba mengecualikan semua jalur ini, tetapi satu direktori masih mengeluh:
find . -type f -not -path './.*/*'
find: ./.DocumentRevisions-V100: Permission denied
Haknya seperti ini (diatur oleh sistem operasi, jadi saya berasumsi mereka tidak boleh dikacaukan).
d--x--x--x root wheel .DocumentRevisions-V100
Bagaimana cara mengubah find pernyataan untuk secara efektif menghilangkan semua direktori tersembunyi agar tidak mengeluh. (Saya tidak ingin melakukan 2>/dev/null karena saya ingin tahu tentang masalah lain).
Jawaban yang Diterima:
Dengan GNU find atau temuan lain yang mendukung -readable dan -executable predikat:
find . -type d ! ( -readable -executable ) -prune -o -type f -not -path './.*/*' -print
Pertama, kami memangkas direktori yang tidak dapat dilalui. Jika kondisi tersebut tidak berlaku, coba kondisi lainnya.
Jika find tidak memiliki opsi ini, Anda dapat mencocokkan dengan izin file.
find . -type d ! -perm -u+rx -prune -o -type f ! -path './.*/*' -print