it-swarm.com.de

Wie kann ich alle Dateien in aktuellen und Unterordnern anhand des Platzhalterabgleichs rekursiv finden?

Wie kann ich alle Dateien in aktuellen und Unterordnern anhand des Platzhalterabgleichs rekursiv finden?

1398
john

Verwenden Sie find dafür:

find . -name "foo*"

find benötigt einen Startpunkt und der . (Punkt) zeigt auf das aktuelle Verzeichnis.

2081
tux21b

Das Pfeifen von find in grep ist oft praktischer Damit erhalten Sie die volle Leistung regulärer Ausdrücke für die Platzierung beliebiger Wildcards.

So suchen Sie beispielsweise alle Dateien mit der Zeichenfolge "foo" im Dateinamen, bei der die Groß-/Kleinschreibung nicht beachtet wird:

~$ find . -print | grep -i foo
182
Paul Whipp

find findet alle Dateien, die einem Muster entsprechen:

find . -name "*foo"

Wenn Sie jedoch ein Bild wünschen:

tree -P "*foo"

Hoffe das hilft!

118
IslandCow

Wenn Ihre Shell eine neue Globbing-Option unterstützt (kann aktiviert werden durch: shopt -s globstar), können Sie Folgendes verwenden:

echo **/*foo*

um rekursiv nach Dateien oder Ordnern zu suchen. 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 Shell eingefügt oder in die ~/.bashrc-Datei Ihres Benutzers eingefügt werden.

Dann kann ich nach allen Dateien suchen, indem ich Folgendes eingebe:

f some_name

Alternativ können Sie ein fd-Dienstprogramm mit einer einfachen Syntax verwenden, z. fd pattern.

21
kenorb
find -L . -name "foo*"

In einigen Fällen habe ich den Parameter -L benötigt, um symbolische Verzeichnisverknüpfungen zu behandeln. Standardmäßig werden symbolische Links ignoriert. In diesen Fällen war es ziemlich verwirrend, da ich das Verzeichnis in ein Unterverzeichnis ändern und die Datei mit dem Muster übereinstimmen würde, aber find den Dateinamen nicht zurückgibt. Mit -L wird dieses Problem gelöst. Die symbolischen Verknüpfungsoptionen für find sind -P -L -H

21
toddcscar
find <directory_path>  -type f -name "<wildcard-match>"

In der Platzhalter-Übereinstimmung können Sie die Zeichenfolge angeben, die Sie zuordnen möchten, z. * .c (für alle c-Dateien) 

20
P_Jain

fd

Falls find zu langsam ist, versuchen Sie das fd-Dienstprogramm - eine einfache und schnelle Alternative zu find, die in Rust geschrieben wurde.

Syntax:

fd PATTERN

Demo:

Homepage: https://github.com/sharkdp/fd

12
kenorb

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'
8
user8848899

Die Standardmethode für die Suche nach rekursiven Dateien ist in den meisten Fällen verfügbar

find . -name "filepattern"

Das rekursive Durchlaufen von Dateinamen oder Mustern beginnt im aktuellen Verzeichnis, in dem Sie sich befinden. Mit dem Befehl find können Sie Platzhalter und verschiedene Optionen verwenden, um die vollständige Liste der Optionen anzuzeigen

man find

oder wenn Manpages in Ihrem System nicht verfügbar sind

find --help

Es gibt jedoch modernere und schnellere Tools als find, die Ihr gesamtes Dateisystem durchlaufen und Ihre Dateien indizieren. Eines dieser gebräuchlichen Tools ist locate oder slocate/mlocate. Sie sollten im Handbuch Ihres Betriebssystems nachlesen, wie es installiert wird, und sobald es ist Installiert muss die Datenbank initiiert werden. Wenn das Installationsskript dies nicht für Sie erledigt, kann dies manuell durch Eingabe erfolgen

Sudo updatedb

Und um damit nach einem bestimmten Dateityp zu suchen

locate filename

Um im aktuellen Verzeichnis nach Dateiname oder Muster zu suchen, können Sie Folgendes eingeben:

 pwd | xargs -n 1 -I {} locate "filepattern"

Es durchsucht die Datenbank der Dateien und gibt schnell Pfadnamen aus, die dem von Ihnen eingegebenen Muster entsprechen . Um die vollständige Liste der locate-Optionen anzuzeigen, geben Sie Folgendes ein: locate --help oder man locate

Darüber hinaus können Sie locate so konfigurieren, dass die Datenbank zu einem bestimmten Zeitpunkt über einen cron-Job aktualisiert wird. Das Beispiel cron, das db um 1 Uhr aktualisiert, würde wie folgt aussehen:

0 1 * * * updatedb

Diese cron-Jobs müssen von root konfiguriert werden, da updateb root-Rechte benötigt, um das gesamte Dateisystem zu durchlaufen.

4

für die Dateisuche
find / -xdev -name settings.xml -> gesamter Computer
find ./ -xdev -name settings.xml -> aktuelles Verzeichnis & sein Unterverzeichnis

für Dateien mit Erweiterungstyp

find . -type f -name "*.iso"
2
Alberto

Der folgende Befehl hilft bei der Suche nach Dateien 

1) Unabhängig vom Fall
2) Ergebnis Ordner ohne Erlaubnis ausschließen
3) Suchen von der Wurzel oder vom gewünschten Pfad aus. Ändern Sie/mit dem Pfad, den Sie bevorzugen. 

Syntax : 
find -iname '' 2> & 1 | grep -v "Berechtigung verweigert"

Beispiel

find/-iname 'C * .xml' 2> & 1 | grep -v "Berechtigung verweigert"

find / -iname '*C*.xml'   2>&1 | grep -v "Permission denied"
1
MukeshKoshyM

Der folgende Befehl listet alle Dateien mit dem exakten Namen "Muster" (zum Beispiel) in den aktuellen Ordnern und ihren Unterordnern auf. 

find ./ -name "pattern"

1
anshul

Dadurch werden alle zugehörigen Dateien in aktuellen und Unterverzeichnissen durchsucht und deren Zeilenzahl getrennt und vollständig berechnet:

find . -name "*.wanted" | xargs wc -l
0
Jay Yang

Wenn Sie eine spezielle Datei mit Platzhalter suchen 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 begonnen wurde (aktueller Ort)
-type bezeichnet den Typ des Suchbegriffs, der hier die Datei (f) ist.
-name bedeutet, dass Sie Dateien mit * .conf names suchen möchten.

0
Reza Harasani