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?

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*'

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.


que fait shopt -s globstar ??
capybaralet

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.