ฉันอยากจะชี้ให้เห็นคำตอบนี้โดย @Gilles ในเส้นทางที่ไม่รวมที่ทำให้ค้นหาบ่นเกี่ยวกับสิทธิ์ - Unix & Linux Stack Exchange ; โดยพื้นฐานแล้วมันเกี่ยวข้องกับการสร้างfind
สิ่งที่ทำให้ไม่สามารถเข้าถึงไดเรกทอรีที่อ่านไม่ได้และในแง่นั้นอาจจะเร็วขึ้นอีกเล็กน้อย
นี่ดูเหมือนจะใช้ได้สำหรับฉัน:
ด้วย GNU find
หรืออื่น ๆfind
ที่รองรับ-readable
และเพรดิเคต-executable
:
find / -type d ! \( -readable -executable \) -prune -o -type f -name netcdf -print
หรือสิ่งนี้:
find / -type d ! -perm -g+r,u+r,o+r -prune -o -type f -name 'netcdf' -print
ด้วยเหตุผลบางอย่างฉันต้องเพิ่มทั้งหมดg+r,u+r,o+r
(ทางลัดสำหรับที่เป็นa+r
) มิฉะนั้นหากหนึ่งในนั้นถูกปล่อยออกมาฉันอาจยังคงได้รับความนิยม "ปฏิเสธสิทธิ์"
นี่คือรายละเอียดของวิธีที่ฉันเห็นนี้ (หมายเหตุ-a
(และ) ผู้ประกอบการในfind
เป็นนัยระหว่างเพรดิเคตสอง ):
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
โปรดทราบว่าหากไม่มีรายการสุดท้าย-print
ฉันจะได้รับรายการพิเศษบางรายการที่แสดง (ซึ่งไม่มีส่วนเกี่ยวข้อง-name 'netcdf'
) -print
เพื่อให้แน่ใจว่ามีเพียงตรงกับชื่อที่มีการพิมพ์ (ถ้ามี)