Antworten:
Das direkte Äquivalent ist
find . -iname <filename>
Hier werden alle <filename>
im aktuellen Verzeichnis und in allen Unterverzeichnissen aufgerufenen Dateien und Verzeichnisse aufgelistet, wobei Groß- und Kleinschreibung ignoriert wird.
Wenn Ihre Version von find nicht unterstützt wird -iname
, können Sie -name
stattdessen verwenden. Beachten Sie, dass im Gegensatz zu -iname
, -name
Groß- und Kleinschreibung.
Wenn Sie nur die aufgerufenen Dateien <filename>
und nicht die Verzeichnisse auflisten möchten , fügen Sie hinzu-type f
find . -iname <filename> -type f
Wenn Sie Platzhalter verwenden möchten, müssen Sie diese in Anführungszeichen setzen, z
find . -iname "*.txt" -type f
Andernfalls wird die Shell sie erweitern.
Wie andere bereits betont haben, können Sie auch Folgendes tun:
find . | grep "\.txt$"
grep
druckt Zeilen basierend auf regulären Ausdrücken, die leistungsfähiger als Platzhalter sind, aber eine andere Syntax haben.
Siehe man find
und man grep
für weitere Details.
<filename>
als Markierung für die Benutzereingabe ist in Befehlszeilenumgebungen, in denen die < and >
meiste Zeit eine bestimmte Bedeutung hat, eine schlechte Angewohnheit . Ich schlage vor, nur filename
FILENAME zu verwenden, um es hervorzuheben. Die meisten Menschen werden verstehen, und diejenigen, die dies nicht tun, können Schaden anrichten, wenn sie nicht verstehen, dass sie nicht das Zeichen kleiner oder größer als treffen sollen.
<filename>
Es ist eine Konvention in vielen UNIX-Dokumentationen, daher denke ich, dass es nützlich ist, dass sich die Leute darüber im Klaren sind, aber ich stimme zu, dass es FILENAME
möglicherweise einfacher ist, sie zu verstehen.
find -iname <filename>
ist besser, da die Groß- und Kleinschreibung nicht berücksichtigt wird wie bei DOS
Einige Muscheln erlauben ls **/filename
, was sehr praktisch ist.
shopt -s globstar; echo **/filename
äquivalent zu find . -name "filename"
. Es funktioniert auch in zsh.
shopt -s globstar
, wird es wahrscheinlich für dich funktionieren. Rekursives Globbing ist eine Funktion, die nur in einigen Shells verfügbar ist und manchmal nicht standardmäßig aktiviert ist.
shopt
Befehl aktiviert die Option globstar on
. Jetzt funktioniert es wie ein Zauber. Danke vielmals.
Sie können dies mit tun
find . | egrep filename
find . -regextype posix-egrep -regex '.*filename.*'
(Ich weiß nicht, ob der egrep
Teil wichtig ist, aber Sie haben egrep
in Ihrer Antwort verwendet, also habe ich es eingeschlossen)
grep
verwendet reguläre Ausdrücke, während der DOS-Befehl Shell-Platzhalter verwendet.
find . -name "*.*"
wird nicht tun, was Sie von einem DOS-Hintergrund erwarten würden. Globs sind nah genug, um erkennbar zu sein, während Regexes ein völlig neues Biest sind.
*.*.*
man in einem modernen DOS zB Windows Cmd? Was ist *.*.*.*
?
Es kann auch sein: tree -if </your/path>
oder 'pwd'
als Pfad
<filename>
Platzhalter enthalten sind, setzen Sie sie in Anführungszeichen, zfind . -name '*.txt'
.