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 find
yang 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 find
atau yang lain find
yang mendukung -readable
dan -executable
predikat:
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 -a
operator (dan) di find
adalah 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 -print
memastikan bahwa hanya nama yang cocok yang dicetak (jika ada).