Wie kann ich einen Platzhalter in allen Unterordnern suchen?


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

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.


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'
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.