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