Devo generare un elenco di file da un volume del disco. Alcune delle directory (tutte le directory nascoste nella directory principale) hanno strani permessi che fanno sì che find si lamenti.
Cerco di escludere tutti questi percorsi, ma una directory si lamenta ancora:
find . -type f -not -path './.*/*'
find: ./.DocumentRevisions-V100: Permission denied
I diritti sono così (impostati così dal sistema operativo, quindi suppongo che non dovrebbero essere rovinati).
d--x--x--x root wheel .DocumentRevisions-V100
Come faccio a modificare il find
dichiarazione di omettere effettivamente tutte le directory nascoste per non lamentarsi. (Non voglio fare 2>/dev/null
come voglio sapere su altri problemi).
Risposta accettata:
Con GNU find o qualsiasi altro find che supporti il -readable
e -executable
predicati:
find . -type d ! ( -readable -executable ) -prune -o -type f -not -path './.*/*' -print
Per prima cosa eliminiamo le directory che non sono attraversabili. Se tale condizione non si applica, prova le altre condizioni.
Se il tuo find
non ha queste opzioni, puoi confrontare i permessi del file.
find . -type d ! -perm -u+rx -prune -o -type f ! -path './.*/*' -print