J'ai besoin de générer une liste de fichiers à partir d'un volume de disque. Certains des répertoires (tous les répertoires cachés sous le répertoire racine) ont des autorisations étranges qui font que find se plaint.
J'essaie d'exclure tous ces chemins, mais un répertoire se plaint toujours :
find . -type f -not -path './.*/*'
find: ./.DocumentRevisions-V100: Permission denied
Les droits sont comme ça (définis ainsi par le système d'exploitation, donc je suppose qu'ils ne devraient pas être modifiés).
d--x--x--x root wheel .DocumentRevisions-V100
Comment changer le find
déclaration pour omettre efficacement tous les répertoires cachés afin de ne pas se plaindre. (Je ne veux pas faire 2>/dev/null
car je veux connaître d'autres problèmes).
Réponse acceptée :
Avec GNU find ou toute autre trouvaille qui supporte le -readable
et -executable
prédicats :
find . -type d ! ( -readable -executable ) -prune -o -type f -not -path './.*/*' -print
Tout d'abord, nous éliminons les répertoires qui ne sont pas traversables. Si cette condition ne s'applique pas, essayez les autres conditions.
Si votre find
n'a pas ces options, vous pouvez faire correspondre les autorisations de fichier.
find . -type d ! -perm -u+rx -prune -o -type f ! -path './.*/*' -print