Linux-Suche bricht die Suche nach Bedingung ab. Der Befehl „find“: Leistungsstarkes Suchen nach Dateien unter Linux. Übersicht über den Verzeichnisbaum

Sehr oft müssen Sie dringend eine Datei im Dateisystem finden, wissen aber nicht, wo sie sich befindet. Und wenn GUI-Dienstprogramme zum Suchen einer Datei müde sind oder Sie überhaupt keine GUI installiert haben oder diese grundsätzlich nicht verwenden, dann kommen umfangreiche Befehle zum Durchsuchen von Dateien, Ordnern und Teilen einer Datei unter Linux zum Einsatz Rettung.

Suchen Sie nach einer Datei anhand des Namens in der Datenbank.
Der Befehl „locate“ kann verwendet werden, um nach einem Teil des Dateinamens nach Dateien zu suchen. Der Befehl durchsucht die Namensdatenbank und gibt den Pfad zu den gesuchten Dateien an. Für eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung empfehlen wir die Ausführung des Befehls mit der Option -i:locate -i.
Beispiel:

subsanek@subsanek-laptop:~$locate -i .ogg
/home/subsanek/unknown - unbekannt/01 - unbekannt 1 - ???.ogg
/usr/local/Zend/ZendStudio-7.1.2/docs/PHPmanual/book.oggvorbis.html
/usr/local/Zend/ZendStudio-7.1.2/docs/PHPmanual/intro.oggvorbis.html
/usr/share/kde4/apps/bball/bounce.ogg
/usr/share/kde4/apps/klettres/en_GB/alpha/a.ogg
/usr/share/kde4/apps/klettres/en_GB/alpha/b.ogg
/usr/share/kde4/apps/klettres/en_GB/alpha/c.ogg
(gekürzt)


-Befehlsaufruf hat alle Dateien auf dem System mit der Erweiterung ogg gefunden.
„locate“ sucht sehr schnell nach Dateien, durchsucht jedoch lediglich eine Liste mit Namen aus der Datenbank. Wenn die Datei aktuell ist, besteht eine gute Chance, dass sie nicht gefunden wird.
Datenbankaktualisierung.
Sie können die Datenbank des Locate-Befehls mit dem Befehl aktualisieren (als Root):
aktualisiertb
Lesbare Ausgabe.
Oftmals kann der Befehl „locate“ ein Multitausender-Ergebnis liefern, das nur vor dem Bildschirm aufblitzt und nichts für Ihre Augen tut. Um dies zu vermeiden, können Sie das Ergebnis der Ausgabe in den Container umleiten:
lokalisieren -i .ogg | weniger
Mit der Option -n können Sie auch angeben, wie viele Ergebnisse angezeigt werden sollen:
lokalisieren -i .ogg -n 10
- zeigt die ersten 10 Ergebnisse an.

Suchen Sie nach Dateien mit echtem Scan.
Der Befehl „find“ durchsucht das Dateisystem nach einer Datei, was dieses Tool langsam, aber effizient macht.
Um nach Namen zu suchen, müssen Sie den Schlüssel -name angeben
Beispiel:
finde -name Dateiname.txt
Standardmäßig sucht find rekursiv im aktuellen Verzeichnis.

Suchen Sie nach Text anhand von Textfragmenten.
Der legendäre grep-Befehl kann fast jedem Zweck dienen. Ich nutze es nicht nur gerne, um die richtigen Dateien im Quellverzeichnis zu finden. Sie können grep auch verwenden, um nach regulären Ausdrücken zu suchen.
Befehlsprototyp:
grep „Suchmuster“ file_to_search
Beispiel:
grep -R "text" /
-Befehl sucht rekursiv in allen Textdateien des Systems nach dem Wort Text.
Grep bietet eine beeindruckende Anzahl an Optionen, die Sie möglicherweise häufig benötigen:

subsanek@subsanek-laptop:~$ grep --help
Verwendung: grep [KEY]... PATTERN [FILE]...
Suchen Sie in jeder DATEI oder Standardeingabe nach MUSTER.
Standardmäßig ist PATTERN ein einfacher regulärer Ausdruck (BRE).
Beispiel: grep -i "hello world" menu.h main.c

Auswahl eines regulären Ausdruckstyps und Interpretation:
-E, --extended-regexp PATTERN – erweiterter regulärer Ausdruck (ERE)
-F, --fixed-regexp MUSTER – Zeichenfolgen fester Länge getrennt
Newline-Zeichen
-G, --basic-regexp PATTERN – einfacher regulärer Ausdruck (BRE)
-P, --perl-regexp MUSTER – Reguläre Perl-Ausdrücke
-e, --regexp=PATTERN PATTERN für die Suche verwenden
-f, --file=DATEI übernimmt MUSTER aus DATEI
-i, --ignore-case ignoriert die Groß-/Kleinschreibung
-w, --word-regexp PATTERN muss mit allen Wörtern übereinstimmen
-x, --line-regexp PATTERN muss mit der gesamten Zeile übereinstimmen
-z, --null-data-Zeichenfolgen werden durch ein Null-Byte getrennt, nicht
Leitungsabschluss

Zusätzlich:
-s, --no-messages unterdrücken Fehlermeldungen
-v, --revert-match wählt nicht übereinstimmende Zeilen aus
-V, --version Versionsinformationen anzeigen und beenden
--help Hilfe anzeigen und beenden
--mmap verwendet nach Möglichkeit die Speicherzuordnung (mmap).

Ausgabemanagement:
-m, --max-count=NUM stoppt nach angegebener NUM Übereinstimmung
-b, --byte-offset Druckoffset in
Bytes
-n, --line-number gibt die Zeilennummer zusammen mit den Ausgabezeilen aus
--line-buffered Spülpuffer nach jeder Zeile
-H, --with-filename gibt den Dateinamen für jede Übereinstimmung aus
-h, --no-filename startet die Ausgabe nicht ab Dateiname
--label=LABEL gibt LABEL als Dateinamen für aus
Standardeingabe
-o, --only-matching zeigt nur den Teil der Zeichenfolge an, der mit PATTERN übereinstimmt
-q, --quiet, --silent unterdrücken alle normalen Ausgaben
--binary-files=TYPE berücksichtigt den Binärdateityp:
binär, Text oder ohne Übereinstimmung.
-a, --text dasselbe wie --binary-files=text
-I dasselbe wie --binary-files=without-match
-d, --directories=ACTION, wie mit Verzeichnissen umgegangen wird
AKTION kann gelesen (gelesen) werden,
rekursiv (rekursiv) oder überspringen (überspringen).
-D, --devices=ACTION, wie mit Geräten, FIFOs und Sockets umgegangen wird
AKTION kann „lesen“ oder „überspringen“ sein
-R, -r, --recursive dasselbe wie --directories=recurse
--include=F_PATTERN verarbeitet nur Dateien, die mit F_PATTERN übereinstimmen
--exclude=F_PATTERN Dateien und Verzeichnisse überspringen,
passend zu F_TEMPLATE
--exclude-from=DATEI überspringt Dateien, die dem Muster entsprechen
Dateien aus DATEI
--exclude-dir=PATTERN-Verzeichnisse, die mit PATTERN übereinstimmen,
wird übersprungen
-L, --files-without-match gibt nur DATEI-Namen ohne Übereinstimmungen aus
-l, --files-with-matches gibt nur DATEI-Namen mit Übereinstimmungen aus
-c, --count gibt nur die Anzahl der Übereinstimmungen aus
Zeilen pro DATEI
-T, --initial-tab tab-align (falls erforderlich)
-Z, --null druckt Byte 0 nach dem DATEI-Namen

Kontextmanagement:
-B, --before-context=NUM gibt die ANZAHL der Zeilen des vorherigen Kontexts aus
-A, --after-context=NUM gibt NUM Zeilen des nachfolgenden Kontexts aus
-C, --context[=NUM] gibt NUM Kontextzeilen aus,
--color[=WANN],
--colour[=WHEN] verwendet Markierungen, um Übereinstimmungen zu unterscheiden
Linien; WANN kann immer (immer) sein,
nie (nie) oder auto (automatisch)
--color, --color verwenden Markierungen, um übereinstimmende Linien zu unterscheiden
-U, --binary CR-Zeichen am Ende einer Zeile nicht entfernen (MSDOS)
-u, --unix-byte-offsets gibt den Offset aus, als ob es keine CRs gäbe (MSDOS)

Grep -E soll anstelle von egrep ausgeführt werden. Anstelle von fgrep wird grep -F angenommen.
Das Ausführen als egrep oder fgrep sollte am besten vermieden werden.
Wenn FILE nicht angegeben ist oder wenn FILE - ist, wird die Standardeingabe gelesen.
Wenn weniger als zwei Dateien angegeben sind, wird -h angenommen. Wenn gefunden
übereinstimmt, ist der Programm-Exit-Code 0, andernfalls 1.
Fehler oder wenn die Option -q nicht angegeben ist, ist der Exit-Code 2.

Der Find-Befehl unter Linux/FreeBSD. Befehlssyntax finden.

Befehlssyntax finden:

# find [Pfad] [Optionen] [Suchoptionen] [Dateiaktionen]

Weg- Wo nach Dateien gesucht werden soll, können Sie die durch ein Leerzeichen getrennte Liste der Pfade verwenden.

Optionen- beginnend mit dem Zeichen „-“, gefolgt vom Namen der Option:
-D Durchsuchen Sie Unterverzeichnisse, bevor Sie das Verzeichnis selbst durchsuchen
-L Folgen Sie bei der Suche symbolischen Links
-maxtiefe NÜberprüfen Sie bei der Suche nicht mehr als N verschachtelte Verzeichnisebenen
-mintiefe N Scannen Sie keine verschachtelten Verzeichnisse der Ebene N oder niedriger
-montieren Durchsuchen Sie keine Verzeichnisse anderer Dateisysteme

Suchoptionen

-atimeN Der letzte Zugriff auf die Datei erfolgte vor N Tagen
-mtimeN Zuletzt bearbeitet Datei war vor N Tagen
-Name Vorlage Dateiname (Namensvorlage) ohne Pfad. Es wird empfohlen, die Vorlage immer in Anführungszeichen zu setzen
-Größe [±]N Die Dateigröße beträgt N Blöcke. Wenn +N angegeben ist, ist die Dateigröße größer als N, -N ist kleiner. Das Zeichen nach dem N gibt die Blockgröße an. b – 512 Byte, c – Byte, w – 2 Byte, k – Kilobyte, M – Megabyte, G – Gigabyte.
-type N Eine Datei vom Typ N. Die am häufigsten verwendeten Werte für N sind: d für Verzeichnis, f für Datei.
-Benutzer Benutzername Die Datei gehört einem Benutzer namens Benutzername.

Beispiele für die Verwendung des Suchbefehls mithilfe von Parametern:

# finden . -type f -name "~*" -print

Suchen Sie im aktuellen Verzeichnis nach gewöhnlichen Dateien (keine Verzeichnisse), deren Namen mit dem Symbol „~“ beginnen.

# finden . -neuere Datei.bak -type f -print

Suchen Sie nach Dateien im aktuellen Verzeichnis, die nach der Datei file.bak geändert wurden.

Betreiber
Kriterien können mithilfe von Operatoren kombiniert werden. Im Folgenden sind die Operatoren in absteigender Reihenfolge ihrer Priorität aufgeführt.

Kurzform Langform Beschreibung
!criteria -not Negation (gibt true zurück, wenn das Kriterium falsch ist)
Kriterium1 – ein Kriterium2 – und UND-Operator (wahr, wenn Kriterium1 und Kriterium2 wahr sind)
Kriterium1-o Kriterium2 - oder ODER-Operator (wahr, wenn Kriterium1 oder Kriterium2 wahr ist)

IN Allgemeiner Fall Bei der Verwendung von Operatoren werden die Kriterien in der Reihenfolge ihrer Priorität überprüft. Sie können die Reihenfolge mithilfe von Klammern ändern. Klammern müssen durch einen Backslash getrennt werden.

Finden Sie Befehlsbeispiele mit Operatoren

#finden . \(-name "%*" -or -name "temp*" \) -type f -print

Suchen Sie im aktuellen Verzeichnis nach Dateien, die mit dem Zeichen „%“ oder c „temp“ beginnen und Dateien sind ( -Typ f), keine Verzeichnisse.

# finden . -max Depth 1 \(\(-size +600M -and -size -1G \) -or -name "*.mpeg" \) -and -type f

Suchen im aktuellen Verzeichnis (ohne Verarbeitung von Unterverzeichnissen - -maxdeph 1) reguläre Dateien ( -Datei f) größer als 600 MB und weniger als 1 GB (-size) oder Dateien, deren Name mit „.mpeg“ (-name) endet.

Aktionen für Dateien
Wenn der Suchbefehl ausgeführt wird, können Sie verschiedene Aktionen für die gefundenen Dateien ausführen. Betrachten wir die wichtigsten.

Exec-Befehl \; - Führen Sie einen Befehl aus. Beachten Sie, dass auf den Befehl ein Backslash und ein Semikolon folgen.
-execdir-Befehl \; – Wie exec, aber der Befehl wird aus dem Unterverzeichnis aufgerufen, das die aktuelle Datei enthält.
-ok Befehl \; – Wie exec, aber vor der Verarbeitung der nächsten Datei werden Sie aufgefordert, den Befehl auszuführen.
-okdir-Befehl \; -Gleich wie ok für execdir.
-print – Zeigt den Dateinamen auf dem Bildschirm an.
-ls – Führen Sie den Befehl ls -dils für die aktuelle Datei aus.

In den von Ihnen ausgeführten Befehlen können Sie Folgendes verwenden Parameter () als Argument, das durch den Pfad zur aktuellen Datei ersetzt wird.

Finden Sie Befehlsbeispiele mithilfe von Aktionen

# finden . -size +1000c -type f -ls

Suchen Sie im aktuellen Verzeichnis nach gewöhnlichen Dateien, die größer als 1000 Byte sind, und führen Sie den Befehl ls -dils (Aktion ls) für sie aus.

# finden . -name "~*" -type f -ok rm () \;

Suchen Sie im aktuellen Verzeichnis nach gewöhnlichen Dateien, die mit dem Tilde-Zeichen „~“ beginnen, und geben Sie für jede Datei eine Anforderung zum Löschen aus (um den rm-Befehl auszuführen).

BEISPIELE:

Suchen Sie Dateien nach ihrer Größe

# find /var/log -name "*.log" -and \(-size +1k -and -size -1000k \) -and -type f -print

Dateien mit der Erweiterung *.log und einer Größe von 1 KB bis 1000 KB werden gefunden und angezeigt

Durchsuchen Sie Dateien nach Besitzer und Gruppe

Dieser Befehl findet alle Dateien, die keinen Besitzer haben

Optionen -Benutzer oder -uid ermöglicht Ihnen die Suche nach Dateien anhand der Benutzer-ID (UID), des Benutzernamens und des Parameters -Gruppe nach Gruppennamen.

# finden . -name "*.log" -Benutzer-Root -Gruppen-Root

Findet alle Dateien im aktuellen Verzeichnis mit Erweiterungsprotokoll von Benutzer-Root und Gruppen-Root

# find -user root -o -user www

Findet alle Dateien des Benutzers root oder www

Verwendung regulärer Ausdrücke

Dienstprogramm finden unterstützt Reguläre Ausdrücke. Nehmen wir gleich ein Beispiel. Nehmen wir an, ich möchte alle Dateien finden, deren Erweiterungen .php oder .js sind. Ich könnte es so machen:

# find -regextype posix-egrep -regex ".*(php|js)$"

Es sieht ein wenig kompliziert aus, nicht wahr? Als Gegenargument weisen wir darauf hin, dass die hier verwendete Syntax ist egrep (-regextype posix-egrep) und gibt dann den regulären Ausdruck an, der für die Suche verwendet werden soll. Der Ausdruck beginnt und endet mit einfachen Anführungszeichen, damit die Shell selbst nicht versucht, den regulären Ausdruck zu analysieren. Dann kommt der Ausdruck.*, der einen Platzhalter verwendet, der jedem Zeichen oder Zeichensatz entspricht. Der Teil (php|js) weist Sie an, nach php oder js zu suchen. Die Pipeline (|) in diesem Ausdruck stimmt überein Boolescher Ausdruck"oder". Schließlich zeigt das Dollarzeichen ($), das den Ausdruck beendet, an, dass wir nach diesen Erweiterungen am Ende des Dateinamens suchen. Wenn Sie also eine Datei mit dem Namen js.txt haben, entspricht diese nicht den Suchkriterien.

Arbeiten mit der Zeit
Das Suchdienstprogramm bietet alles, was Sie zum Suchen nach Dateinutzungszeit benötigen. Sie können nach Zugriffszeit suchen ( -eine Zeit), entweder bis zum Zeitpunkt der letzten Änderung der Datei (-mtime) oder bis zum Zeitpunkt der letzten Änderung (-mtime) -ctime).

Suchen wir zum Beispiel alle Dateien, die in den letzten zwei Tagen nicht geändert wurden:

# find -mtime +2

Wenn Sie innerhalb eines bestimmten Bereichs nach Dateien suchen möchten, können Sie die Optionen kombinieren. Also würde find -mtime +2 -mtime -5 „vor zwei oder mehr Tagen, aber nicht mehr als fünf Tagen“ bedeuten.

Arbeiten mit Minuten
Manchmal müssen Sie nach Dateien suchen, die am letzten Tag geändert wurden, und die vorherigen Suchoptionen sind hierfür nicht sehr genau. Das Suchdienstprogramm ist gut, weil es auch Parameter hat -amin, -cmin Und -mmmin, die den zuvor besprochenen Optionen ähneln, jedoch Minuten statt Tage verwenden. Wenn Sie also sehen möchten, welche Dateien am letzten Tag geändert oder aufgerufen wurden, können Sie diese Optionen nutzen.

Suchbeschränkungen
Manchmal liefert das Suchdienstprogramm mehr Ergebnisse als Sie benötigen. Sie können die vom Suchdienstprogramm zurückgegebenen Suchergebnisse einschränken, indem Sie den Parameter angeben maximale Tiefe. Zum Beispiel, wenn Sie alle finden möchten JavaScript-Dateien Im WordPress-Verzeichnis können Sie den folgenden Befehl verwenden:

# finde WordPress -Name „*js“

Was aber, wenn Sie nur die JavaScript-Dateien sehen möchten, die sich im Verzeichnis auf dem befinden? Höchststufe? Mit dem Parameter können Sie Ihre Suche einschränken -maximale Tiefe:

# find WordPress -max Depth 1 -name "*js"

Die Suche erfolgt nur im WordPress-Verzeichnis, nicht in Unterverzeichnissen. Wenn Sie den Wert ändern -maximale Tiefe Durch 2 werden Unterverzeichnisse des WordPress-Verzeichnisses durchsucht, jedoch keine tieferen Unterverzeichnisse.

Kombinieren des Suchdienstprogramms mit anderen Befehlen
Nachdem Sie nun die gesuchten Dateien gefunden haben, was werden Sie damit machen? Sie können die Parameter im Suchdienstprogramm verwenden xargs oder -exec, mit der Sie die Aktion angeben können, die für Dateien ausgeführt werden soll, nachdem Sie sie gefunden haben.

Nehmen wir an, Sie möchten den Eigentümer einer Datei für eine große Anzahl von Dateien gleichzeitig von „root“ in „www-data“ ändern. Das Auffinden aller dieser Dateien ist nur der erste Schritt. Sie müssen außerdem den Besitzer der Datei ändern. Führen Sie dies manuell gemäß der vom Dienstprogramm zurückgegebenen Liste durch finden, sehr langweilig. Um den Besitz von Dateien zu ändern, können Sie daher Folgendes verwenden: -exec:

# find -user root -exec chown www-data () \;

Es ist sehr wichtig, rechtzeitig und sehr schnell finden zu können notwendige Informationen im System. Natürlich alles modern Dateimanager bieten großartige Suchfunktionen, sind jedoch nicht mit der Linux-Terminalsuche zu vergleichen. Es ist viel effizienter und flexibler als die normale Suche. Sie können Dateien nicht nur nach Namen, sondern auch nach Datum und Inhalt suchen und auch reguläre Ausdrücke für die Suche verwenden. Darüber hinaus können Sie mit den gefundenen Dateien sofort die notwendigen Aktionen durchführen.

In diesem Artikel sprechen wir über die Suche mit dem sehr leistungsstarken Linux-Befehl „find“ und erläutern seine Syntax, Optionen und einige Beispiele.

Find ist eines der wichtigsten und am häufigsten verwendeten Dienstprogramme. Linux-Systeme. Dies ist ein Befehl zum Suchen nach Dateien und Verzeichnissen basierend auf speziellen Bedingungen. Es kann unter verschiedenen Umständen verwendet werden, z. B. zum Suchen nach Dateien nach Berechtigungen, Eigentümern, Gruppen, Typ, Größe und anderen ähnlichen Kriterien.

Das Suchdienstprogramm ist standardmäßig in allen vorinstalliert Linux-Distributionen Sie müssen also keine zusätzlichen Pakete installieren. Dies ist ein sehr wichtiger Fund für diejenigen, die ihn nutzen möchten Befehlszeile am effizientesten.

Der Suchbefehl hat die folgende Syntax:

Kriterien für [Ordner] [Optionen] finden Muster [Aktion]

Ordner- das Verzeichnis, in dem wir suchen werden

Optionen - Zusätzliche Optionen, zum Beispiel Suchtiefe usw.

Kriterium- Nach welchem ​​Kriterium suchen wir: Name, Erstellungsdatum, Rechte, Eigentümer usw.

Probe- direkt der Wert, nach dem wir Dateien auswählen.

Die Hauptparameter des Suchbefehls

Ich werde hier nicht alle Optionen auflisten, wir werden nur die nützlichsten berücksichtigen.

  • -PÖffnen Sie niemals symbolische Links
  • -L- Ruft Informationen zu Dateien über symbolische Links ab. Wichtig für die weitere Verarbeitung ist, dass nicht der Link, sondern die Datei selbst verarbeitet wird.
  • -maximale Tiefe- Maximale Suchtiefe in Unterverzeichnissen, um nur im aktuellen Verzeichnis zu suchen, auf 1 gesetzt.
  • -Tiefe- Suchen Sie zuerst im aktuellen Verzeichnis und dann in Unterverzeichnissen
  • -montieren Suchen Sie nur nach Dateien in diesem Dateisystem.
  • -Ausführung- Version des Suchdienstprogramms anzeigen
  • -drucken- Vollständige Dateinamen anzeigen
  • -Typ f- Nur Dateien durchsuchen
  • -Typ d- Ordner unter Linux finden

Kriterien

Es gibt viele Kriterien für den Befehl „find“ unter Linux, und auch hier werden wir nur die wichtigsten berücksichtigen.

  • -Name- Suchen Sie nach Dateien nach Namen
  • -Dauerwelle- Durchsuchen Sie Dateien unter Linux nach Zugriffsmodus
  • -Benutzer- Dateien nach Eigentümer durchsuchen
  • -Gruppe- Gruppensuche
  • -mzeit- Suche nach Dateiänderungszeit
  • -eine Zeit- Durchsuchen Sie Dateien nach dem Datum des letzten Lesens
  • -nogroup- Suche nach Dateien, die keiner Gruppe angehören
  • -nouser- Suche nach Dateien ohne Eigentümer
  • -neuer- Dateien finden, die neuer als die angegebene sind
  • -Größe- Suchen Sie Dateien in Linux nach ihrer Größe

Anwendungsbeispiele

Schauen wir uns nun Beispiele für find an, damit Sie besser verstehen, wie Sie dieses Dienstprogramm verwenden.

1. Durchsuchen Sie alle Dateien

Alle Dateien im aktuellen Verzeichnis anzeigen:

2. Suchen Sie nach Dateien in einem bestimmten Ordner

Alle Dateien im angegebenen Verzeichnis anzeigen:

Suchen Sie im aktuellen Ordner nach Dateien nach Namen:

finden. -name „*.jpg“

Bei der Suche nach Namen die Groß-/Kleinschreibung ignorieren:

finden. -iname „test*“

3. Begrenzung der Suchtiefe

Suchen Sie unter Linux nur in diesem Ordner nach Dateien:

finden. -max Depth 1 -name „*.php“

4. Musterumkehr

Suchen Sie nach Dateien, die keinem Muster entsprechen:

finden. -not -name „test*“

5. Mehrere Kriterien

Suche nach mehreren Kriterien mit dem Befehl „find“ unter Linux und einem Ausschlussoperator:

finden. -name "test" -not -name "*.php"

Findet alle Dateien, die mit „test“ beginnen, jedoch ohne PHP-Erweiterungen. Betrachten Sie nun den OR-Operator:

find -name "*.html" -o -name "*.php"

6. Mehrere Verzeichnisse

In zwei Verzeichnissen gleichzeitig suchen:

find ./test ./test2 -type f -name "*.c"

7. Suchen Sie nach versteckten Dateien

Versteckte Dateien finden:

find ~ -type f -name ".*"

8. Suche nach Berechtigungen

Suchen Sie nach Dateien mit einer bestimmten Berechtigungsmaske, zum Beispiel 0664:

finden. Typ f-perm 0664

Suchen Sie nach Dateien mit gesetztem suid/guid-Flag:

find / -perm 2644

find / -max Depth 2 -perm /u=s

Schreibgeschützte Dateien finden:

finde /etc -max Depth 1 -perm /u=r

Nur ausführbare Dateien finden:

finde /bin -max Depth 2 -perm /a=x

9. Durchsuchen Sie Dateien nach Gruppen und Benutzern

Finden Sie alle Dateien, die einem Benutzer gehören:

finden. -Benutzer sergiy

Suchen Sie unter Linux nach Dateien, die zu einer Gruppe gehören:

Finden Sie /var/www -Gruppenentwickler

10. Suche nach Änderungsdatum

Das Suchen von Dateien nach Datum erfolgt unter Linux mithilfe des mtime-Parameters. Finden Sie alle Dateien, die vor 50 Tagen geändert wurden:

find / -mtime 50

Suchen Sie nach Dateien in Linux geöffnet Vor N Tagen:

find / -atime 50

Finden Sie alle Dateien, die vor 50 bis 100 Tagen geändert wurden:

find / -mtime +50 –mtime -100

Suchen Sie nach Dateien, die innerhalb einer Stunde geändert wurden:

11. Suchen Sie Dateien nach Größe

Finden Sie alle Dateien mit einer Größe von 50 Megabyte:

Finden / -Größe 50M

Von fünfzig bis einhundert Megabyte:

find / -size +50M -size -100M

Finden Sie die kleinsten Dateien:

finden. -type f -exec ls -s () \; | sort -n -r | Kopf-5

Der Größte:

finden. -type f -exec ls -s () \; | sort -n | Kopf-5

12. Suchen Sie nach leeren Dateien und Ordnern

finde /tmp -type f -empty

$ find ~/ -type d -empty

13. Aktionen mit gefundenen Dateien

Die Option -exec wird verwendet, um beliebige Befehle für die gefundenen Dateien auszuführen. Führen Sie beispielsweise ls aus, um detaillierte Informationen zu jeder Datei zu erhalten:

finden. -exec ls -ld() \;

alles löschen Textdateien zu tmp

find /tmp -type f -name "*.txt" -exec rm -f () \;

Löschen Sie alle Dateien, die größer als 100 Megabyte sind:

find /home/bob/dir -type f -name *.log -size +10M -exec rm -f () \;

Schlussfolgerungen

Damit ging dieser kurze Artikel zu Ende, in dem der Find-Befehl behandelt wurde. Wie Sie sehen, ist dies einer der wichtigsten Linux-Terminalbefehle und macht es sehr einfach, eine Liste der benötigten Dateien zu erhalten. Es ist wünschenswert, dass jeder es weiß Systemadministratoren. Wenn Sie genau nach dem Inhalt der Dateien suchen müssen, ist es besser, die Datei zu verwenden.

Vielleicht kennen Sie ein Problem wie: Sie können die Datei nicht finden, aber sie befindet sich irgendwo auf dem Computer. Dann ist der Befehl find praktisch.

Sie fragen: Wie benutzt man es? Es gibt eine riesige Manpage für dieses Programm. Wir werden uns einige häufige Fälle ansehen.

Sie können mit dem Einfachsten beginnen: Wenn Sie den Namen der Datei kennen, können Sie sie leicht finden! Alles, was Sie tun müssen, ist „find“ einzugeben und einen bestimmten Dateinamen anzugeben!

Linux sucht Dateien nach Namen

Hier ist der einfacher Befehl:

Finde den Namen Liebe
Wenn es eine Datei mit dem Namen „love“ gibt, findet der Befehl „find“ den Speicherort der Datei oder mehrerer Dateien wie folgt:

jzb@kodos:~$ find -name love ./projects/love jzb@kodos:~$
Zum Beispiel werden wir nach allen Dateien im MP3-Format suchen und dies tun volle Liste im Ordner:

Datei /home/artix -iname „.mp3“ > ./list.txt

Suche nach Dateien anhand eines Teils des Namens

Als nächstes finden wir Dateien im txtx-Format, nicht nur Dateien, sondern solche Textdateien, die das Wort „LEON“ enthalten:

Datei /home/artix -iname ".txt" -exec grep -H "LEON" "()" \; > ./list.txt
Großartig, das haben wir bereits Es stellt sich heraus, dass mit dem Wort nach Linux-Dateien gesucht wird"LEON". Auf die gleiche Weise können Sie den Überschuss auch im Hintergrund entfernen, sodass Sie weiterarbeiten können:

Datei /home/artix -iname ".bak" -exec rm "()" \; &
So machen wir unser Leben einfacher. Das sind die einfachsten Dinge, und sie enthalten so viele nützliche Dinge.

Finden Sie Dateien nach Datum unter Linux

Find ./ -mmin -10 #Änderungsdatum ist weniger als 10 Minuten find ./ -mtime +1 #Änderungsdatum ist mehr als ein Tag find ./ -type f -atime +10 # Zugriffszeit ist mehr als 10 Tage find . / -type f -amin - 10 #Änderungsdatum letzte 10 Minuten

Text in Linux-Dateien finden

Es kommt häufig vor, dass Sie nach Text suchen möchten Linux-Dateien. Ich gebe zwei Beispiele für die Suche nach Dateien: (Linux, FreeBSD) Sie benötigen ein Textfragment in Dateien:

# find /var/named/ -type f -exec grep "MX" () \; servernetwork.info. 14400 IN MX 10 Post
und einer mehr:

# grep -rl "MX" /var/named/ /var/named/serversnetwork.info.db

Suchen Sie Dateien nach Größe
Manchmal können andere Befehle verwendet werden, um nach Linux-Dateien zu suchen. Sie haben beispielsweise bemerkt, dass die Lautstärke in einigen Abschnitten Ihres Computers anfing, zuzunehmen. Um herauszufinden, mit welcher Datei es zusammenhängt oder welcher Ordner überfüllt ist, können Sie den folgenden Befehl verwenden:

Finden Sie die Größe 95k.
So finden wir 95.000 Dateien. Diese Option wird jedoch selten genutzt. Weitere Befehle können verwendet werden, um eine Datei zu finden, die größer oder kleiner als eine angegebene Größe ist. Zum Beispiel die Option:

Finden Sie die Größe +150k
Sollte Dateien anzeigen, die größer als 150 KB sind. Eine Option

Finden Sie die Größe -94k
alles unter 94K.

Die Funktion -size sucht nach Dateien der angegebenen Größe und sieht bei Ausführung folgendermaßen aus:

$ finden . -Größe 3500k -Druck
Diese Option durchsucht Linux nach Dateien und zeigt sie auf dem Bildschirm an diejenigen mit einer Größe von 3500 Kilobyte, die sich in diesem Ordner befinden. Wenn Sie Dateien finden müssen, deren Größe weniger als 250 Kilobyte beträgt, sieht der Befehl folgendermaßen aus:

$ finden . -Größe -200k -Druck
Wenn es erforderlich ist, Dateien zu finden, deren Größe mehr als 555 Megabyte beträgt, verwenden wir die Option:

$ find / -size +555M -print
Vielleicht werde ich dazu meinen Artikel zu Ende schreiben.

Jetzt können Sie wahrscheinlich selbst nach Dateien suchen, nach Text in Linux-Dateien suchen, nach Dateien nach Datum suchen!

Vielen Dank bisher an alle!

Zweifellos ist es bei der Arbeit mit Linux manchmal notwendig Dateisuche mit bestimmten Eigenschaften. Diese Merkmale können die Größe oder der Typ der Datei, Berechtigungen und mehr sein.


Verfügbarkeit in Linux-Befehle finden hilft sehr bei der Bewältigung Dateisuche nach verschiedenen Kriterien.


Heute werden wir analysieren Suchen Sie nach Dateien unter Linux und geben Sie die Hauptbefehlsoptionen an finden die Sie in Ihrer Arbeit anwenden können.

Befehlsformat finden:

findenWeg-Optionen

Wo Weg ist das zu durchsuchende Verzeichnis. Für den Pfad können Sie folgende Werte angeben:

. - Suche im aktuellen Verzeichnis;

/ - Suche im Stammverzeichnis;

~ - Suche im Home-Verzeichnis.

Was die Optionen angeht, gibt es hier eine viel größere Liste, die unbedingt sorgfältig gelesen werden muss (dies wird in Zukunft sehr hilfreich sein!). Also, Grundoptionen des Suchbefehls:

-Name- Suchen Sie mithilfe der angegebenen Vorlage nach Dateien nach Namen.

-Benutzer- nach Dateien suchen, die dem angegebenen Benutzer gehören;

-Gruppe- Suche nach Dateien, die zur angegebenen Gruppe gehören;

-Dauerwelle- nach Dateien mit dem angegebenen Zugriffsmodus suchen;

-Typ- Suche nach Dateien eines bestimmten Typs. Typen reichen auch aus:

  • b – spezielle Blockdatei;
  • d – Verzeichnis;
  • c ist eine Sonderzeichendatei;
  • f – reguläre Datei;
  • l - symbolischer Link;
  • p – Named Pipe;
  • s - Sockel.
-Größe- Suche nach Dateien mit der Größe n Einheiten;

-mtime -n +n- Suchen Sie nach Dateien, deren Inhalt sich vor weniger als (-) oder mehr als (+) Tagen geändert hat.

Betrachten Sie einige Beispiele für die Verwendung von Befehlen finden :

Die am häufigsten verwendete Option ist die Option -Name, das nach Dateien nach Namen sucht.

Beispiele mit der Option -name :

$ finde /mnt/usb -name "*.mp3" -print

sucht nach allen Dateien (gekennzeichnet durch das *-Zeichen), die die Erweiterung .mp3 auf dem im Verzeichnis /mnt/usb gemounteten USB-Gerät haben.

$ find ~ -name "test*" -print

zeigt eine Liste der Dateien im Home-Verzeichnis an, beginnend mit test.

Wenn Sie Dateien suchen müssen, die mit bestimmten Buchstaben beginnen (z. B. von a bis j), ist es praktisch, hier reguläre Ausdrücke zu verwenden, mit denen Sie äußerst bequem arbeiten können:

$ find / -name "*" -print

Der obige Befehl findet alle Dateien auf dem System, die mit den Buchstaben a bis j beginnen.

Suchen von Dateien mit bestimmten Zugriffsmodi

Wenn Sie Dateien finden müssen, die über bestimmte Zugriffsmodi verfügen, können Sie diese Option verwenden -Dauerwelle was Ihnen leicht weiterhelfen wird.

Suchen wir zum Beispiel nach Dateien mit dem Zugriffsmodus 775 (Eigentümer und Gruppe haben). volle Rechte und andere Benutzer haben eine Schreibbeschränkung) im aktuellen Verzeichnis:

$ finden. -perm 775 -drucken

Suche mit finden Mit der Option -perm können Sie einen anderen Weg nutzen: Sie können einen Bindestrich vor den Moduswert setzen und dann wird nach Dateien gesucht, für die alle angegebenen Berechtigungsbits gesetzt sind. Darüber hinaus werden die verbleibenden Bits in diesem Fall ignoriert.

Suchen wir zum Beispiel nach Dateien, auf die Gruppenbenutzer vollen Zugriff haben:

$ finden. -perm -070 -print

Anstelle eines Bindestrichs können Sie auch ein Pluszeichen angeben. In diesem Fall wird nach Dateien gesucht, bei denen mindestens eines der angegebenen Berechtigungsbits gesetzt ist. Die restlichen Bits werden ignoriert.

Suchen Sie nach Dateien eines bestimmten Benutzers oder einer bestimmten Gruppe

Die Suche nach Dateien eines bestimmten Benutzers ist in der Umsetzung äußerst einfach. Führen Sie dazu einfach den folgenden Befehl aus:

$ find / -user admin -print

Der obige Befehl erzeugt Dateisuche auf dem System, das dem Admin-Benutzer gehört.

Um Dateien zu finden, die zu einer bestimmten Gruppe gehören (z. B. Manager), führen Sie den folgenden Befehl aus:

$ find / -group manager -print

Um nach Dateien nicht vorhandener Benutzer oder Gruppen zu suchen, können Sie die Optionen verwenden -nouser Und -nogroup:

$ find / -nouser -print

$ find / -nogroup -print

Suchen Sie nach Dateien eines bestimmten Typs

Eine der praktischen Funktionen des Befehls finden ist die Möglichkeit, nach Dateien eines bestimmten Typs zu suchen. Erwägen Sie Optionen für die Verwendung der Option -Typ:

Suche nach symbolischen Links im Verzeichnis /etc:

$ finde /etc -type l -print

Zeigt eine Liste der im Verzeichnis /mnt/raid vorhandenen Verzeichnisse an

$ finde /mnt/raid -type d -print

Suchen Sie nach Dateien einer bestimmten Größe

Möglichkeit -Größe ermöglicht die Suche nach Dateien einer bestimmten Größe und sieht bei der Ausführung folgendermaßen aus:

$ finden. -Größe 2000k -Druck

Der obige Befehl findet die 2-Megabyte-Dateien im aktuellen Verzeichnis und zeigt sie an. Wenn Sie beispielsweise Dateien mit einer Größe von weniger als 500 Kilobyte suchen müssen, sieht der Befehl so aus:

$ finden. -Größe -500k -Druck

Wenn Sie Dateien finden müssen, die größer als 600 Megabyte sind, verwenden Sie den folgenden Befehl:

$ find / -size +600M -print

Suchen nach Dateien mit der Option -mtime

Möglichkeit -mzeit ermöglicht es Ihnen, Dateien zu finden, die sich im Laufe der Zeit geändert haben.

Beispielsweise standen wir vor der Aufgabe, im Verzeichnis /mnt/raid/upload nach Dateien zu suchen, die sich in den letzten 5 Tagen geändert haben. Dieser Befehl hilft uns:

$ Finden Sie /mnt/raid/upload -mtime -5 -print

Wenn wir das Gegenteil benötigen, um beispielsweise Dateien zu finden, die sich eine Woche lang nicht geändert haben, verwenden wir den Befehl:

$ Finden Sie /mnt/raid/upload -7 -print

Team finden ist extrem handliches Werkzeug Für Dateisuche und kann auch für verwendet werden Dateisuche auf NFS-Laufwerken (Netzwerk). Dateisysteme), aber in diesem Fall muss berücksichtigt werden, dass die Suche nach etwas auf NFS viel länger dauert als auf lokalen Festplatten.

In diesem Artikel haben wir nur die grundlegenden Optionen des Befehls „find“ behandelt, die Ihnen bei Ihrer Arbeit helfen werden. Nutzen Sie das, was praktisch ist, und machen Sie sich keine Gedanken über Kleinigkeiten!