Antworten:
Verwenden Sie dafür find :
find . -name "foo*"
find
benö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
find
hat auch die -iname
, -regex
und -iregex
Flaggen für Groß- und Kleinschreibung Wildcard, regex und Groß- und Kleinschreibung Regex Matching, um so kochend grep
ist nicht erforderlich.
find
Befehl ausgestattet sind, der diese Optionen unterstützt. Manchmal grep
wird 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 tree
für Mac OSX-Benutzer ohne apt-get
Installation
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 ~/.bashrc
Datei Ihres Benutzers hinzugefügt werden.
Dann kann ich nach Dateien suchen, indem ich Folgendes eingebe:
f some_name
Alternativ können Sie ein fd
Dienstprogramm mit einer einfachen Syntax verwenden, z fd pattern
.
shopt -s globstar
Befehl aktivieren müssen . Dies wird in Bash-, zsh- und ähnlichen Shells unterstützt.
bash-3.2$ shopt -s globstar
gibtbash: shopt: globstar: invalid shell option name
fd
Wenn find
es zu langsam ist, versuchen Sie es mit dem fd
Dienstprogramm - eine einfache und schnelle Alternative zufind
Rust.
Syntax:
fd PATTERN
Demo:
Homepage: https://github.com/sharkdp/fd
asciicast2vector
verwendet 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)
-type
bedeutet die Art des Suchelements, bei dem es sich um die Datei (f) handelt.
-name
bedeutet, dass Sie Dateien mit * .conf- Namen suchen möchten .
Verwenden
find path/to/dir -name "*.ext1" -o -name "*.ext2"
Erläuterung
find
erfolgt die Rekursion.-o
steht für -or
. Oben bedeutet also, nach diesem oder diesem Platzhalter zu suchen. Wenn Sie nur ein Muster haben, brauchen Sie es nicht -o
.