Comment puis-je rechercher un nom générique dans tous les sous-dossiers?

26

Comment puis-je rechercher un nom générique dans tous les sous-dossiers? Quel serait l'équivalent de la commande DOS: dir *pattern* /sdans * nix?

Eduard Florinescu
la source

Réponses:

40

Vous pouvez utiliser find. Si, par exemple, vous souhaitez rechercher tous les fichiers et répertoires qui se trouvaient abcddans le nom de fichier, vous pouvez exécuter:

find . -name '*abcd*'
Ryan A.
la source
12

Zsh:

ls -ld -- **/*abcd*

Ksh93:

set -o globstar     # put this line in your ~/.kshrc
ls -ld -- **/*abcd*

Bash ≥4:

shopt -s globstar   # put this line in your ~/.bashrc
ls -ld -- **/*abcd*

Yash:

set -o extendedglob # put this line in your ~/.yashrc
ls -ld -- **/*abcd*

tcsh:

set globstar
ls -ld -- **/*abcd*

poisson:

ls -ld -- **abcd*

(attention certains de ces coquilles vont suivre les liens symboliques lors de la descente l'arborescence, certains de ceux qui ne le font pas comme zsh, yashou tcshavoir ***/*abcd*à le faire).

Portable (sauf pour les systèmes très anciens; OpenBSD a pris du temps mais prend finalement en charge exec … +depuis la version 5.1):

find . -name '*abcd*' -exec ls -ld {} +

Pas POSIX mais fonctionne sur * BSD, Linux, Cygwin, BusyBox:

find . -name '*abcd*' -print0 | xargs -0 ls -ld

Notez que, sauf dans certains BSD, si aucun fichier correspondant n'est trouvé, ls -ldil sera exécuté sans arguments, ainsi la liste sera affichée .. Avec certaines xargsimplémentations, vous pouvez utiliser l' -roption pour contourner cela.

Gilles 'SO- arrête d'être méchant'
la source
que fait shopt -s globstar ??
capybaralet
@ user2429920 gnu.org/software/bash/manual/… et cliquez sur gnu.org/software/bash/manual/bash.html#The-Shopt-Builtin puis faites défiler jusqu'à globstar.
Gilles 'SO- arrête d'être méchant'