Wie kann ich einen Platzhalter in allen Unterordnern suchen? Was wäre das Äquivalent zum DOS-Befehl: dir *pattern* /s
in * nix?
Sie können verwenden find
. Wenn Sie beispielsweise alle Dateien und Verzeichnisse abcd
im Dateinamen suchen möchten, können Sie Folgendes ausführen:
find . -name '*abcd*'
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
, yash
oder tcsh
haben ***/*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 -ld
wird, diese ohne Argumente ausgeführt wird .
. Bei einigen xargs
Implementierungen können Sie die -r
Option verwenden, um dies zu umgehen.
globstar
.