Come posso cercare un nome jolly in tutte le sottocartelle?


26

Come posso cercare un nome jolly in tutte le sottocartelle? Quale sarebbe l'equivalente del comando DOS: dir *pattern* /sin * nix?

Risposte:


40

È possibile utilizzare find. Se, ad esempio, volessi trovare tutti i file e le directory presenti abcdnel nome file, puoi eseguire:

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*

pesce:

ls -ld -- **abcd*

(attenzione alcune di queste conchiglie seguiranno i collegamenti simbolici durante la discesa l'albero delle directory, alcuni di quelli che non ti piace zsh, yasho tcshavere ***/*abcd*per farlo).

Portatile (tranne che per sistemi molto vecchi; OpenBSD ha impiegato molto tempo ma alla fine supporta exec … +dal 5.1):

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

Non POSIX ma funziona su * BSD, Linux, Cygwin, BusyBox:

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

Si noti che, tranne in alcuni BSD, se non viene trovato alcun file corrispondente, ls -ldverrà eseguito senza argomenti, quindi verrà elencato .. Con alcune xargsimplementazioni, è possibile utilizzare l' -ropzione per aggirare questo.


cosa fa shopt -s globstar ??
capybaralet,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.