103 votes

Qu'est-ce qui s'étend à tous les fichiers du répertoire courant de manière récursive ?

Je sais. **/*.ext s'étend à tous les fichiers dans tous les sous-répertoires correspondant à *.ext mais qu'en est-il d'une expansion similaire qui inclut tous les fichiers de ce type dans le répertoire de l'utilisateur ? actuel également ?

123voto

Dennis Williamson Points 105818

Cela fonctionnera dans Bash 4 :

ls -l {,**/}*.ext

Pour que le glob double-asterisque fonctionne, l'élément globstar doit être définie (par défaut : on) :

shopt -s globstar

De man bash :

    globstar
                  If set, the pattern \*\* used in a filename expansion con‐
                  text will match a files and zero or more directories and
                  subdirectories.  If the pattern is followed by a /, only
                  directories and subdirectories match.

13voto

unutbu Points 222216

Ceci imprimera tous les fichiers dans le répertoire courant et ses sous-répertoires qui se terminent par '.ext'.

find . -name '*.ext' -print

4voto

Amir Afghani Points 17519
$ find . -type f

Cela donnera la liste de tous les fichiers du répertoire actuel. Vous pouvez alors exécuter une autre commande sur la sortie en utilisant -exec

$find . -type f -exec grep "foo" {} \;

Cela va rechercher la chaîne "foo" dans chaque fichier du répertoire find.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X