Wie kann ich einen Platzhalter in allen Unterordnern suchen?

26

Wie kann ich einen Platzhalter in allen Unterordnern suchen? Was wäre das Äquivalent zum DOS-Befehl: dir *pattern* /sin * nix?

Eduard Florinescu
quelle

Antworten:

39

Sie können verwenden find. Wenn Sie beispielsweise alle Dateien und Verzeichnisse abcdim Dateinamen suchen möchten, können Sie Folgendes ausführen:

find . -name '*abcd*'
Ryan A.
quelle
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*

Fisch:

ls -ld -- **abcd*

(Vorsicht einige dieser Schalen wird Symlinks folgen , wenn die Verzeichnisstruktur absteigend, einige von denen , die nicht wie zsh, yashoder tcshhaben ***/*abcd*es zu tun).

Portabel (außer auf sehr alten Systemen; OpenBSD hat lange gebraucht, unterstützt aber endlich exec … +seit 5.1):

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

Nicht POSIX sondern funktioniert auf * BSD, Linux, Cygwin, BusyBox:

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

Beachten Sie, dass außer in einigen BSDs, wenn keine passende Datei gefunden ls -ldwird, diese ohne Argumente ausgeführt wird .. Bei einigen xargsImplementierungen können Sie die -rOption verwenden, um dies zu umgehen.

Gilles 'SO - hör auf böse zu sein'
quelle
was macht shopt -s globstar ??
Capybaralet
@ user2429920 gnu.org/software/bash/manual/… und klicken Sie sich durch zu gnu.org/software/bash/manual/bash.html#The-Shopt-Builtin und scrollen Sie dann nach unten zu globstar.
Gilles 'SO- hör auf böse zu sein'