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 -namestattdessen verwenden. Beachten Sie, dass im Gegensatz zu -iname, -nameGroß- 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 findund man grepfü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 filenameFILENAME 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 FILENAMEmö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.
shoptBefehl 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 egrepTeil wichtig ist, aber Sie haben egrepin Ihrer Antwort verwendet, also habe ich es eingeschlossen)
grepverwendet 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'.