So verwenden Sie das Suchprogramm. Wir suchen nach Dateien in Linux. Lassen Sie uns nun eine sehr wichtige Option für die Suche nach einer Datei anhand der Größe "-size" analysieren.

Heute werden wir uns einige der beliebtesten Möglichkeiten ansehen, um Dateien in Linux mit dem Terminal zu finden.

1) finde: Um Dateien über die Befehlszeile zu finden, können Sie den Befehl „find“ verwenden. Dieser Befehl hat die folgende Syntax:

Pfadkriteriumsaktion finden

"Weg" - Abschnitt zur Angabe des Suchverzeichnisses. Wenn nichts angegeben ist, durchläuft die Suche das aktuelle Verzeichnis.

„Kriterien“ - Suchoptionen.

"Handlung" - Optionen, die den Status der Suche beeinflussen oder steuern, wie z

2) suchen: Befehl "Lokalisieren" es ist eine Alternative zum Befehl „find -name“. Der find-Befehl sucht nach Dateien im ausgewählten Teil des Dateisystems und der Vorgang ist möglicherweise nicht sehr schnell. Auf der anderen Seite sucht der Befehllocate nach Dateien in einer eigens dafür erstellten Datenbank /var/lib/locatedb, was viel schneller ist. Um die Datenbank zu aktualisieren, verwenden Sie den Befehl aktualisiertb.

3) wo:wo ist " gibt die Position des Codes (Option -b), der Manpages (Option -m) und der Quelldateien (Option -s) für den angegebenen Befehl zurück. Wenn keine Optionen angegeben sind, werden alle verfügbaren Informationen angezeigt. Dieser Befehl ist schneller als „ finden " aber weniger vollständig.

4) welche: Befehl " welcher " sucht nach allen in aufgeführten Pfaden die PATH-Variable für den angegebenen Befehl.

5) Typ:

Zeigt bei Aufruf ohne Optionen an, wie Namen interpretiert werden

wenn es als Befehlsname verwendet wird. Wenn Option verwendet wird -ein, Befehl Typ listet alle Verzeichnisse auf, in denen es eine ausführbare Datei gibt mit

passenden Namen. Die Liste enthält auch Aliase und Funktionen,

es sei denn, Option ist angegeben -P... ZU

Auf den Hash von Befehlen wird nicht zugegriffen, wenn die Option angegeben ist -ein... Befehl Typ gibt 0 zurück,

wenn mindestens eines der Argumente gefunden wird und 1 andernfalls.

Posten

Explo.ru - alles rund um Tourismus und Erholung: Heiße Touren und Touren in die Türkei, Ägypten,

Manchmal wissen Sie, dass eine Datei oder ein Verzeichnis vorhanden ist, wissen aber nicht, wie Sie es finden können. Es gibt mehrere Befehle, die Ihnen dabei helfen: find,locate und which.

4.10.1. Befehl suchen

Der find-Befehl hat das folgende Format:

Suchpfad pattern_for_search

Wenn Sie keinen Pfad angeben, beginnt find mit der Suche nach dem angegebenen Muster im aktuellen Verzeichnis und durchsucht alle Unterverzeichnisse darin.

Der Befehl find hat viele Optionen, die Sie in der Manpage sehen können (geben Sie Befehlszeile Mann finden). Die am häufigsten verwendete Option ist -name, die nach allen Dateien und Verzeichnissen sucht, die eine bestimmte Buchstabenkombination im Namen enthalten.

Finden. -name tes

Dieser Befehl durchsucht das aktuelle Verzeichnis nach allen Dateien, die "tes" im Namen enthalten.

4.10.2. Befehl lokalisieren

Mit diesem Befehl sehen Sie alle Dateien oder Verzeichnisse, deren Namen das gesuchte Muster enthalten. Zum Beispiel für Dateisuche das Wort Hund im Namen enthält, geben Sie in die Befehlszeile ein:

Hund lokalisieren

Der Befehl locate verwendet eine Datenbank, um Dateien oder Verzeichnisse zu finden, die das Wort Hund enthalten. Die Suchergebnisse können eine Datei namens dog, eine Datei namens bulldog.txt, ein Verzeichnis namens /dogs/ usw. enthalten. Um mehr über den Befehl Locate zu erfahren, lesen Sie die Manpage (geben Sie man Locate in der Befehlszeile ein).

Vorausgesetzt, die Datenbank ist auf dem neuesten Stand, sucht der Suchbefehl sehr schnell. Die Befehlsdatenbank von Locate wird jede Nacht mit dem Cron-Dienst aktualisiert.

cron ist ein kleines Programm, das im Hintergrund läuft und in regelmäßigen Abständen verschiedene Aufgaben (wie das Aktualisieren der Datenbank des Suchbefehls) ausführt. Um auf das Cron-Handbuch zuzugreifen, geben Sie man cron in der Befehlszeile ein.

cron aktualisiert regelmäßig die slocate-Datenbank, die zum Auffinden von Dateien oder Verzeichnissen verwendet wird. Wechseln zwischen Betriebssysteme und Ausschalten der Maschine am Ende des Tages verhindert automatische Updates Datenbanken mit cron.

Um die Datenbank manuell zu aktualisieren, melden Sie sich als Root an (indem Sie su - eingeben und das Root-Passwort "a" in der Befehlszeile eingeben) und geben Sie updateb in die Befehlszeile ein.

Nach einer Weile wird die slocate-Datenbank, die vom Befehl locate verwendet wird, aktualisiert.

Wenn Sie die Arbeit abgeschlossen haben, für die Sie root sein müssen, geben Sie exit in die Befehlszeile ein und Sie kehren zu Ihrer Sitzung zurück.

Sie kennen wahrscheinlich das folgende Problem: Es gibt eine Datei und Sie wissen nicht mehr, wo Sie sie abgelegt haben.

Der find-Befehl ist in diesem Fall praktisch. Wie benutze ich es? Natürlich enthält dieses Dienstprogramm eine umfangreiche Manpage, aber wir werden einige typische Fälle behandeln. Durchsuchen Sie den Verzeichnisbaum beginnend mit dem aktuellen und suchen Sie die Datei lostfile.txt:

Wenn Sie in einem großen Verzeichnisbaum suchen, kann der Befehl find ziemlich langsam sein. Manchmal ist es bequemer, den Befehl "locate" zu verwenden. Sie sucht die Datei nicht direkt in Dateisystem und durchsucht seine Datenbank. Diese Methode ist viel schneller, aber die Datenbank kann veraltet sein. In einigen Distributionen wird diese Datenbank jede Nacht geändert. Sie können den Befehl updatedb von Zeit zu Zeit manuell ausführen, um ihn zu ändern. Locate sucht nach Teilzeichenfolgen:

Die Anzahl der erlaubten Rechtschreibfehler hängt von der Länge des Dateinamens ab, kann aber mit der Option -t eingestellt werden. Um maximal 2 Fehler zu beheben und einen Platzhalter zu verwenden, geben Sie einfach Folgendes ein:

Übersicht über den Verzeichnisbaum

Manchmal ist es notwendig, sich einen Überblick über einen Verzeichnisbaum zu verschaffen. Sie haben beispielsweise eine neue CD-ROM erhalten und möchten wissen, was sich darauf befindet. Sie können einfach ls - R verwenden. Ich persönlich bevorzuge eine der folgenden aus Gründen der Lesbarkeit. Tree (sunsite.unc.edu/pub/Linux/utils/file/tree-1.2.tgz) zeigt den Verzeichnisbaum als Diagramm an.

Oder verwenden Sie den guten alten Fund. In der Gnu-Version von find, die normalerweise mit Linux geliefert wird, ist es möglich, das Ausgabeformat zu ändern, um beispielsweise den Dateinamen und seine Größe anzuzeigen:

Sie können eine kleine Perl-Routine verwenden, die mit dem Befehl ls zusammenarbeitet, um so etwas zu tun. Es kann hier heruntergeladen werden: lsperl.gz. Es gibt viele andere Dienstprogramme zum Durchsuchen von Verzeichnisbäumen, aber diese reichen für die meisten Fälle aus.

Suche nach Dateien nach Inhalt (Suche nach Textzeichenfolgen in Dateien).

Die Standard-Dienstprogramme zum Auffinden von Textzeichenfolgen in Dateien sind grep / egrep für die Suche mit regulären Ausdrücken und fgrep für literale Zeichenfolgen. Um in allen Dateien im aktuellen Verzeichnis nach einem Ausdruck zu suchen, geben Sie einfach Folgendes ein:

Wenn Sie sich diese langen Befehle nur schwer merken können, verwenden Sie ein kleines Skript, das Sie hier herunterladen können: grepfind.gz. Das Skript entfernt auch nicht druckbare Zeichen aus der Suchzeichenfolge, damit Sie nicht versehentlich eine Binärdatei als Ergebnis einer egrep-Suche erhalten.

Ein sehr interessantes Suchprogramm ist agrep. Agrep funktioniert im Grunde wie egrep, erlaubt aber falsch geschriebene Suchen. Geben Sie Folgendes ein, um nach einem Ausdruck zu suchen und maximal 2 Rechtschreibfehler zu beheben:

Danach können Sie in allen zuvor indizierten Dateien nach dem String suchen

flüchtiger Blick -i -2 "Suchausbruch"

flüchtig ist auch ein Rechtschreibfehler (wie agrep) und -2 zeigt an, dass zwei Fehler erlaubt sind. Einblick ist verfügbar auf

    Suchen Sie die Datei anhand ihres Namens. Eine solche einfachste Suche wird mit dem Dienstprogramm find ausgeführt. Der folgende Befehl sucht nach einer Datei im aktuellen Verzeichnis und allen seinen Unterverzeichnissen.

    find -iname "Dateiname"

    • Geben Sie -iname anstelle von -name ein, um die Groß-/Kleinschreibung im eingegebenen Dateinamen zu ignorieren. Beim Befehl -name muss die Groß-/Kleinschreibung beachtet werden.
  1. Beginnen Sie mit der Suche im Stammverzeichnis. Um eine systemweite Suche auszuführen, fügen Sie der Abfrage den Modifizierer / hinzu. In diesem Fall sucht der find-Befehl in allen Verzeichnissen nach der Datei, beginnend mit dem Root.

    find / -iname "Dateiname"

    • Sie können mit der Suche in einem bestimmten Verzeichnis beginnen; Ersetzen Sie dazu / durch den Pfad zum Verzeichnis, zum Beispiel /home /max.
    • Kann verwendet werden. statt / um die Datei nur im aktuellen Verzeichnis und seinen Unterverzeichnissen zu suchen.
  2. Verwenden Sie ein Generalisierungssymbol.* um Dateien zu finden, deren Name mit dem Teil der Anfrage übereinstimmt. Sie können das Platzhalterzeichen * verwenden, um eine Datei zu finden, deren vollständiger Name unbekannt ist, oder um alle Dateien mit einer bestimmten Erweiterung zu finden.

    find /home/max -iname "*.conf"

    • Dieser Befehl findet alle .conf-Dateien im Max-Benutzerordner (und seinen Unterordnern).
    • Verwenden Sie diesen Befehl, um alle Dateien zu finden, die einem Teil der Abfrage entsprechen. Wenn Sie beispielsweise viele WikiHow-bezogene Dateien auf Ihrem Computer haben, suchen Sie alle Dateien, indem Sie „*wiki*“ eingeben.
  3. Erleichtern Sie die Verwaltung Ihrer Suchergebnisse. Bei zu vielen Suchergebnissen ist es schwierig, die gewünschte Datei darunter zu finden. Verwenden Sie das Symbol | um die Suchergebnisse mit weniger zu filtern. Dadurch können Sie Ihre Suchergebnisse einfacher anzeigen und filtern.

    find /home /max -iname "* .conf" | weniger

    Suchen Sie nach bestimmten Artikeln. Verwenden Sie Modifikatoren, um nur bestimmte Elemente in den Suchergebnissen anzuzeigen. Sie können nach regulären Dateien (f), Verzeichnissen (d), symbolischen Links (l), Zeichen-E/A-Geräten (c) und Blockgeräten (b) suchen.

    find / -type f -iname "Dateiname"

  4. Filtern Sie Ihre Suchergebnisse nach Dateigröße. Wenn Sie viele Dateien mit ähnlichen Namen auf Ihrem Computer haben, aber die Größe der gesuchten Datei kennen, filtern Sie die Suchergebnisse nach Dateigröße.

    find / -size + 50M -iname "Dateiname"

    • Dieser Befehl findet alle Dateien, die größer als 50 MB sind. Verwenden Sie den Modifikator + oder -, um eine Vergrößerung oder Verkleinerung anzugeben. Wenn kein + oder - Modifizierer vorhanden ist, findet der Befehl Dateien, die genau die gleiche Größe wie die angegebene Größe haben.
    • Suchergebnisse können nach Byte (c), Kilobyte (k), Megabyte (M), Gigabyte (G) oder 512-Byte-Blöcken (b) gefiltert werden. Beachten Sie, dass bei den angezeigten Modifikatoren die Groß-/Kleinschreibung beachtet wird.
  5. Verwenden Sie logische Operatoren (boolesche Operatoren), um Suchfilter zu kombinieren. Sie können die Operatoren -and, -or, -not verwenden, um verschiedene Suchen in einer Abfrage zu kombinieren.

    find / travelphotos -type f -size + 200k -not -iname "* 2015 *"

    • Dieser Befehl findet Dateien im Ordner "Reisefotos", die größer als 200 KB sind und die nicht die Nummer 2015 im Namen haben.

Der Befehl find ist einer der nützlichsten und wichtigsten Befehle unter Linux.
Es wird standardmäßig installiert und ist auf fast allen verfügbar Linux-Versionen... Unter Linux wird alles in Form von Dateien gespeichert, und es lohnt sich offensichtlich zu wissen, wie man diese Dateien findet.

Mit dem Befehl find können Sie anhand einer Reihe von Suchkriterien nach interessanten Dateien suchen. Die Kriterien können sowohl zusammen als auch getrennt angegeben werden, und dann können Maßnahmen mit dem erhaltenen Ergebnis ergriffen werden. In diesem Tutorial werden wir den find-Befehl mit Anwendungsbeispielen beschreiben.

1) Alle Dateien im aktuellen Verzeichnis und seinen Unterverzeichnissen auflisten

Um alle Dateien im aktuellen Verzeichnis und seinen Unterverzeichnissen aufzulisten, können wir Folgendes verwenden:

Alternativ können wir auch 'find. »Was Ihnen das gleiche Ergebnis liefert.

2) Finden Sie alle Dateien und Verzeichnisse in Ihrem aktuellen Arbeitsverzeichnis

Wenn Sie nur Verzeichnisse suchen müssen, können Sie Folgendes verwenden:

$ finden. -typ d

So finden Sie nur Dateien, keine Verzeichnisse:

$ finden. -typ f

3) Listen Sie alle Dateien in einem bestimmten Verzeichnis auf

Geben Sie Folgendes ein, um Dateien aus einem bestimmten Verzeichnis zu finden:

$ find / root

Dieser Befehl sucht nach allen Dateien im /root-Verzeichnis.

4) Suchen Sie die Datei nach dem Namen im Verzeichnis

Geben Sie Folgendes ein, um in einem bestimmten Verzeichnis nach einem Dateinamen zu suchen:

$ find / root -name "linuxtechi.txt"

Dieser Befehl sucht nach der Datei linuxtechi.txt im Verzeichnis / root. Wir finden auch alle Dateien mit der Erweiterung .txt:

$ find /root -name "* .txt"

5) Finden Sie die Datei in mehreren Verzeichnissen

Geben Sie Folgendes ein, um in mehreren Verzeichnissen nach Dateien zu suchen:

$ find /root /etc -name "linuxtechi.txt"

Mit diesem Befehl können wir in den Verzeichnissen /root & /etc nach der Datei linuxtechi.txt suchen.

Mit diesem Befehl finden wir die Datei linuxtechi.txt in den Verzeichnissen /root und /etc.

6) Suchen Sie die Datei nach Name, Groß-/Kleinschreibung nicht beachten

Suchen Sie mit -iname nach Dateien, bei denen die Groß-/Kleinschreibung nicht beachtet wird:

$ find / root -iname "Linuxtechi.txt"

Dadurch erhalten Sie alle Dateien mit dem Namen linuxtechi.txt. In diesem Fall können mehrere Dateien vorhanden sein, da linuxtechi.txt gleich LINUXTECHI.txt ist.

7) Finden Sie alle anderen Dateitypen als die genannten

Nehmen wir an, wir müssen alle Dateien außer einem bestimmten Dateityp finden. Um dies zu erreichen, geben wir ein:

$ find /root -not -name "* .txt"

8) Dateien anhand vieler Zeichen finden

Wir können bei der Suche nach Dateien mehr als eine Bedingung kombinieren. Nehmen wir an, wir benötigen Dateien mit den Erweiterungen .txt und .html:

$ finden. -regex ". * \. \ (txt \ | html \) $"

9) Finden Sie Dateien mit ODER-Bedingung

Wir können auch mehrere Suchkriterien kombinieren, die zu einer Suche nach Dateien basierend auf der Erfüllung einer der Bedingungen führen. Dies geschieht mit dem ODER-Operator:

$ find -name "* .txt" -o -name "linuxtechi *"

10) Suche nach Dateien basierend auf Berechtigungen

Um Dateien mit bestimmtem Zugriff zu finden, verwenden Sie -perm:

$ find / root -type f -perm 0777

11) Finden Sie alle versteckten Dateien

Zum Suchen versteckte Dateien im Verzeichnis eingeben:

$ find ~ -type f name ". *"

12) Finden Sie alle Dateien mit SGID

Um Dateien mit SGID-Bits zu finden, führen Sie den Befehl aus:

$ finden. -perm / g = s

13) Finden Sie alle Dateien mit SUID

Um nach Dateien mit SUID-Bits zu suchen, verwenden Sie:

$ finden. -perm / u = s

14) Finden Sie alle ausführbaren Dateien

Geben Sie Folgendes ein, um nur nach ausführbaren Dateien zu suchen:

$ finden. -perm / a = x

15) Finden Sie schreibgeschützte Dateien

Darüber hinaus können schreibgeschützte Dateien mit dem Befehl find gefunden werden:

$ find / root -perm / u = r

16) Finden Sie alle Benutzerdateien

Um Dateien für einen bestimmten Benutzer zu suchen, verwenden Sie den folgenden Befehl:

$ finden. -user linuxtechi

17) Finde alle Dateien in der Gruppe

Um nach Dateien einer bestimmten Gruppe zu suchen, verwenden wir:

$ finden. -Gruppe Apache

18) Finden Sie alle Dateien einer bestimmten Größe

Wenn wir suchen möchten, deren Größe wir kennen, können wir -size verwenden:

$ finden / -Größe -2M

19) Finden Sie alle Dateien in verschiedenen Größen

Wenn wir eine Datei suchen, deren Größe wir nicht kennen, aber ihre ungefähre Größe kennen, oder wir nur eine Auswahl von Dateien in einem bestimmten Größenbereich treffen, können wir eingeben:

$ finden / -Größe + 2M -Größe -5M

Sie können find-Befehle verwenden, wenn Sie nach Dateien suchen, die schwerer als beispielsweise 50 MB sind:

$ finden / -Größe + 50M

20) Dateien finden, die vor N Tagen geändert wurden

Zum Beispiel möchten wir alle Dateien finden, die vor 8 Tagen geändert wurden. Wir können dies mit der Option '-mtime' im Befehl find erreichen

Zum Beispiel können wir alle Dateien finden, die vor 8 Tagen bearbeitet wurden. Dies geschieht mit dem Befehl -mtime:

$ find / -mtime 8

21) Finden Sie die Dateien, die Sie vor N Tagen besucht haben

Dateien, die vor 8 Tagen eingegeben wurden, können Sie mit -atime finden:

$ find / -atime 8

22) Finde alle leeren Dateien und Verzeichnisse

Geben Sie Folgendes ein, um alle leeren Dateien im System zu finden:

$ find / -type f -leer

Und um ihre Verzeichnisse aufzulisten:

$ find ~ / -type d -leer

23) Finden Sie die größten und kleinsten Dateien

Um die größten oder kleinsten Dateien aufzulisten, verwenden wir find in Verbindung mit sort, und wenn wir die 3 "besten" Dateien anzeigen müssen, verwenden wir auch head.

Geben Sie Folgendes ein, um drei Dateien aus dem aktuellen Verzeichnis anzuzeigen:

$ finden. -typ f -exec ls -s () \; | sortieren -n -r | Kopf -3

Ebenso können wir die kleinsten Dateien im aktuellen Verzeichnis auflisten:

$ finden. -type f -exec ls -s () \; | sortieren -n | Kopf -3

24) Finden Sie alle Dateien mit bestimmtem Zugriff und ändern Sie sie in 644 (oder etwas anderes)

Der Befehl find kann erweiterte Anwendungsfälle bieten. Beispielsweise können wir alle 644 Berechtigungen bestimmter Dateien in 777 ändern. Führen Sie dazu Folgendes aus:

$ find / -type f -perm 644 -print -exec chmod 777 () \;

25) Finden Sie alle Dateien, die bestimmten Kriterien entsprechen, und löschen Sie sie

Früher oder später müssen Sie möglicherweise bestimmte Dateien löschen. Wenn dies passiert ist, geben Sie ein:

$ find / -typ f -name "linuxtechi. *" -exec rm -f () \;

Die obigen Beispiele sind eine großartige Demonstration der Fähigkeiten des Befehls find, die das Auffinden von Dateien erheblich vereinfachen können.