J'utilise find -type f
commande pour rechercher récursivement tous les fichiers d'un certain répertoire de départ. Cependant, j'aimerais que certains répertoires ne puissent pas entrer et extraire les noms de fichiers à l'intérieur. Donc, fondamentalement, je cherche quelque chose comme:
find . -type f ! -name "avoid_this_directory_please"
Existe-t-il une alternative fonctionnelle à cela?
C'est ce que le -Prune
l'option est pour:
find . -type d -name "avoid_this_directory_please" -Prune -o -type f -print
Cela dit essentiellement "s'il y a un répertoire appelé avoid_this_directory_please
, ne le saisissez pas, sinon, s'il s'agit d'un fichier normal, imprimez son chemin ".
Pour éviter un répertoire, essayez le test -path:
find . -type f ! -path '*/avoid_this_directory_please/*'
De man find
, dans le -path
section, combinant apparemment les 2 autres réponses
To ignore a whole directory tree, use -Prune rather than
checking every file in the tree. For example, to skip the directory
`src/emacs' and all files and directories under it, and print the
names of the other files found, do something like this:
find . -path ./src/emacs -Prune -o -print
Essaye ça
find -name "*.js" -not -path "./directory/*"