Saya hanya ingin menunjukkan jawaban ini oleh @Gilles di jalur Kecualikan yang membuat keluh kesah tentang izin - Unix & Linux Stack Exchange ; itu pada dasarnya melibatkan sebuah konstruksi findyang membuatnya tidak turun ke direktori yang tidak dapat dibaca, dan dalam hal itu, mungkin juga sedikit lebih cepat.
Ini sepertinya bekerja untuk saya:
Dengan GNU findatau yang lain findyang mendukung -readabledan -executablepredikat:
find / -type d ! \( -readable -executable \) -prune -o -type f -name netcdf -print
atau juga ini:
find / -type d ! -perm -g+r,u+r,o+r -prune -o -type f -name 'netcdf' -print
Untuk beberapa alasan, saya perlu menambahkan semua g+r,u+r,o+r(pintasan untuk itu a+r), jika tidak jika salah satu dari mereka tidak ada, saya mungkin masih mendapatkan hit "Permission Denied".
Berikut ini adalah rincian tentang bagaimana saya melihat ini (perhatikan -aoperator (dan) di findadalah implisit antara dua predikat ):
find / # find starting from path /
-type d # match type is directory
! -perm -a+r # (and) match not permissions of `r`ead present
-prune # ignore what matched above and do not descend into it
-o # or (whatever didn't match above)
-type f # match type is file
-name 'netcdf' # (and) match name is 'netcdf'
-print # print what matched above
Perhatikan bahwa tanpa yang terakhir -print, saya mendapatkan beberapa item tambahan yang ditampilkan (yang tidak ada hubungannya dengan -name 'netcdf'); yang -printmemastikan bahwa hanya nama yang cocok yang dicetak (jika ada).