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