Antworten:
Verwenden Sie dafür find :
find . -name "foo*"
findbenötigt einen Startpunkt und der .(Punkt) zeigt auf das aktuelle Verzeichnis.
find . foo*, foo*würde das erweitert und dann übergeben, um zu finden.
" "dies für die rekursive Suche sehr wichtig ist.
find . -name "foo*" 2>/dev/null
Piping Find in Grep ist oft bequemer; Sie erhalten die volle Leistung regulärer Ausdrücke für den beliebigen Platzhalterabgleich.
So finden Sie beispielsweise alle Dateien mit der Zeichenfolge "foo" ohne Berücksichtigung der Groß- und Kleinschreibung im Dateinamen:
~$ find . -print | grep -i foo
findhat auch die -iname, -regexund -iregexFlaggen für Groß- und Kleinschreibung Wildcard, regex und Groß- und Kleinschreibung Regex Matching, um so kochend grepist nicht erforderlich.
findBefehl ausgestattet sind, der diese Optionen unterstützt. Manchmal grepwird die einzige Option.
find findet alle Dateien, die einem Muster entsprechen:
find . -name "*foo"
Wenn Sie jedoch ein Bild möchten:
tree -P "*foo"
Hoffe das hilft!
brew install treefür Mac OSX-Benutzer ohne apt-getInstallation
find -L . -name "foo*"
In einigen Fällen habe ich den Parameter -L benötigt, um symbolische Verzeichnisverknüpfungen zu verarbeiten. Standardmäßig werden symbolische Links ignoriert. In diesen Fällen war es ziemlich verwirrend, da ich das Verzeichnis in ein Unterverzeichnis ändern und sehen würde, dass die Datei mit dem Muster übereinstimmt, aber find den Dateinamen nicht zurückgeben würde. Die Verwendung von -L löst dieses Problem. Die symbolischen Verknüpfungsoptionen für find sind -P -L -H
Wenn Ihre Shell eine neue Globbing-Option unterstützt (kann durch :) aktiviert werden shopt -s globstar, können Sie Folgendes verwenden:
echo **/*foo*
um Dateien oder Ordner rekursiv zu finden. Dies wird von Bash 4, zsh und ähnlichen Shells unterstützt.
Persönlich habe ich diese Shell-Funktion definiert:
f() { find . -name "*$1*"; }
Hinweis: Die obige Zeile kann direkt in die Shell eingefügt oder der ~/.bashrcDatei Ihres Benutzers hinzugefügt werden.
Dann kann ich nach Dateien suchen, indem ich Folgendes eingebe:
f some_name
Alternativ können Sie ein fdDienstprogramm mit einer einfachen Syntax verwenden, z fd pattern.
shopt -s globstarBefehl aktivieren müssen . Dies wird in Bash-, zsh- und ähnlichen Shells unterstützt.
bash-3.2$ shopt -s globstargibtbash: shopt: globstar: invalid shell option name
fdWenn findes zu langsam ist, versuchen Sie es mit dem fdDienstprogramm - eine einfache und schnelle Alternative zufind Rust.
Syntax:
fd PATTERN
Demo:
Homepage: https://github.com/sharkdp/fd
asciicast2vectorverwendet werden.
find <directory_path> -type f -name "<wildcard-match>"
In der Platzhalterübereinstimmung können Sie die Zeichenfolge angeben, mit der Sie übereinstimmen möchten, z. B. * .c (für alle c-Dateien).
Sie können verwenden:
# find . -type f -name 'text_for_search'
Wenn Sie REGX verwenden möchten, verwenden Sie -iname
# find . -type f -iname 'text_for_search'
Die Standardmethode für die Suche nach rekursiven Dateien ist in den meisten Fällen verfügbar
find . -name "filepattern"
Es beginnt mit dem rekursiven Durchlaufen von Dateinamen oder Mustern in dem aktuellen Verzeichnis, in dem Sie sich befinden. Mit dem Befehl find können Sie Platzhalter und verschiedene Schalter verwenden, um die vollständige Liste der Optionen anzuzeigen
man find
oder wenn auf Ihrem System keine Manpages verfügbar sind
find --help
Es gibt jedoch modernere und schnellere Tools als die, die Ihr gesamtes Dateisystem durchlaufen und Ihre Dateien indizieren. Ein solches häufiges Tool ist das Suchen oder Verschieben / mlocate. Sie sollten das Handbuch Ihres Betriebssystems überprüfen, wie es installiert wird, und sobald es installiert ist installiert muss es die Datenbank initiieren, wenn das Installationsskript es nicht für Sie erledigt, kann es manuell durch Eingabe erfolgen
sudo updatedb
Und um damit nach einem bestimmten Dateityp zu suchen
locate filename
Um im aktuellen Verzeichnis nach Dateinamen oder Mustern zu suchen, können Sie Folgendes eingeben:
pwd | xargs -n 1 -I {} locate "filepattern"
Es durchsucht die Dateidatenbank und druckt schnell Pfadnamen aus, die dem von Ihnen eingegebenen Muster entsprechen. Geben Sie Folgendes ein, um die vollständige Liste der Suchoptionen anzuzeigen:
locate --help oderman locate
Darüber hinaus können Sie locate so konfigurieren, dass die Datenbank zu geplanten Zeiten über einen Cron-Job aktualisiert wird. So sieht ein Beispiel für Cron aus, das die Datenbank um 1 Uhr morgens aktualisiert:
0 1 * * * updatedb
Diese Cron-Jobs müssen von root konfiguriert werden, da updateb Root-Berechtigungen benötigt, um das gesamte Dateisystem zu durchlaufen.
Ich bin überrascht zu sehen, dass die Lokalisierung nicht stark genutzt wird, wenn wir rekursiv vorgehen sollen.
Ich würde zuerst "$ PWD" suchen, um die Liste der Dateien im aktuellen Ordner von Interesse abzurufen, und dann nach Belieben Greps auf ihnen ausführen.
locate "$PWD" | grep -P <pattern>
Dies setzt natürlich voraus, dass die Aktualisierung abgeschlossen ist und der Index regelmäßig aktualisiert wird. Dies ist eine viel schnellere Methode, um Dateien zu finden, als eine Suche auszuführen und sie zu bitten, den Baum hinunterzugehen. Der Vollständigkeit halber erwähnen. Nichts gegen die Verwendung von find, wenn der Baum nicht sehr schwer ist.
locate "$PWD*.mp4" Nur daran zu erinnern , dass Sie in der Lage sein kann , die überspringengrep
Der folgende Befehl hilft bei der Suche nach Dateien
1) Unabhängig vom Fall
2) Ergebnis Ausschließen von Ordnern ohne Berechtigung
3) Suchen vom Stammverzeichnis oder vom gewünschten Pfad. Ändern Sie / mit dem Pfad, den Sie bevorzugen.
Syntax:
find -iname '' 2> & 1 | grep -v Beispiel "Berechtigung verweigert"
find / -iname 'C * .xml' 2> & 1 | grep -v "Berechtigung verweigert"
find / -iname '*C*.xml' 2>&1 | grep -v "Permission denied"
find / -iname '*C*.xml' 2>/dev/null
Wenn Sie eine spezielle Datei mit Platzhalter durchsuchen möchten, können Sie folgenden Code verwenden:
find . -type f -name "*.conf"
Angenommen, Sie möchten alle .conf-Dateien von hier aus durchsuchen:
.bedeutet, dass die Suche von hier aus gestartet wurde (aktueller Ort)
-typebedeutet die Art des Suchelements, bei dem es sich um die Datei (f) handelt.
-namebedeutet, dass Sie Dateien mit * .conf- Namen suchen möchten .
Verwenden
find path/to/dir -name "*.ext1" -o -name "*.ext2"
Erläuterung
finderfolgt die Rekursion.-osteht für -or. Oben bedeutet also, nach diesem oder diesem Platzhalter zu suchen. Wenn Sie nur ein Muster haben, brauchen Sie es nicht -o.