Frage Wie kann ich rekursiv alle Dateien in aktuellen und Unterordnern basierend auf dem Platzhalter suchen?


Wie kann ich rekursiv alle Dateien in aktuellen und Unterordnern basierend auf dem Platzhalter suchen?


1202
2018-05-05 23:01


Ursprung


Antworten:


Benutzen finden dafür:

find . -name "foo*"

find braucht einen Startpunkt, und die . (Punkt) zeigt auf das aktuelle Verzeichnis.


1788
2018-05-05 23:03



Piping finden in Grep ist oft bequemer; Es bietet Ihnen die volle Leistung von regulären Ausdrücken für beliebige Platzhalter.

Um zum Beispiel alle Dateien mit der Groß- / Kleinschreibung "foo" im Dateinamen zu finden:

~$ find . -print | grep -i foo

164
2017-08-15 06:56



find findet alle Dateien, die einem Muster entsprechen:

find . -name "*foo"

Wenn Sie jedoch ein Bild möchten:

tree -P "*foo"

Hoffe das hilft!


105
2018-05-05 23:15



find -L . -name "foo*"

In einigen Fällen brauchte ich den Parameter -L, 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 änderte und die Datei mit dem Muster übereinstimmte, aber find würde den Dateinamen nicht zurückgeben. Die Verwendung von -L löst dieses Problem. Die symbolischen Verbindungsoptionen für die Suche sind -P-L -H


16
2018-01-14 02:47



Wenn Sie Shell unterstützen eine neue Globbing-Option (Aktivieren Sie es durch: shopt -s globstar), können Sie 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 in den Benutzer eingefügt werden ~/.bashrc Datei.

Dann kann ich nach beliebigen Dateien suchen, indem ich Folgendes eingabe:

f some_name

Obwohl es fast das Gleiche ist wie die Verwendung fd Nützlichkeit.


16
2018-01-13 16:23



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

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


15
2018-02-05 13:32



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'

6
2017-10-29 16:09



Standardmethode für die Suche nach rekursiver Datei und in den meisten Fällen verfügbar ist

find . -name "filepattern"

Es startet rekursives Traversieren nach Dateiname oder Muster aus dem aktuellen Verzeichnis, in dem Sie positioniert sind. Mit dem Befehl find können Sie Platzhalter und verschiedene Schalter verwenden, um die vollständige Liste der Optionen anzuzeigen

man find

oder wenn man-Seiten in Ihrem System nicht verfügbar sind

find --help

Es gibt jedoch modernere und schnellere Tools, die Ihr gesamtes Dateisystem durchlaufen und Ihre Dateien indizieren, ein solches gängiges Tool ist locate or slocate / mlocate, Sie sollten das Handbuch Ihres Betriebssystems überprüfen, wie es installiert wird und wann es installiert ist installiert, muss es die Datenbank initiieren, wenn das Installationsskript es nicht für Sie tut, kann es manuell durch Eingabe erfolgen

sudo updatedb

Und, um nach einem bestimmten Dateityp zu suchen

locate filename

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

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

Es wird durch seine Datenbank nach Dateien suchen und schnell Pfadnamen ausdrucken, die mit dem Muster übereinstimmen, das Sie eingegeben haben. Um die vollständige Liste der Suchoptionen anzuzeigen, geben Sie Folgendes ein: locate --help oder man locate

Zusätzlich können Sie locate so konfigurieren, dass die Datenbank zu geplanten Zeiten über cron job aktualisiert wird, also probieren Sie cron aus, welches db um 1:00 Uhr aktualisiert:

0 1 * * * updatedb

Diese Cron-Jobs müssen von root konfiguriert werden, da updatedb root-Rechte benötigt, um das gesamte Dateisystem durchlaufen zu können.


4
2017-08-09 06:27



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

für Dateien mit Erweiterungstyp

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

2
2018-05-31 08:47



fd

Im Fall, find ist zu langsam, versuche es fd Dienstprogramm - eine einfache und schnelle Alternative zu find geschrieben in Rust.

Syntax:

fd PATTERN

Demo:

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


1
2018-06-13 15:22



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 Suche von hier gestartet (aktueller Ort)
-type bedeutet Art des Suchelements, das hier Datei (f) ist.
-name bedeutet, dass Sie mit Dateien suchen möchten * .conf Namen.


0
2018-02-05 02:52