Linux FIND-Befehl mit Beispielen


Wissen Sie, wie viele Dateien eine Neuinstallation von Linux enthält? Wenn Sie das PopOS! Linux-Distribution als Beispiel, es gibt über 31.000 Dateien. Dies geschieht, bevor Sie mit dem Erstellen von Dokumenten, dem Speichern von Musik, dem Herunterladen von PDFs oder dem Organisieren von Bildern beginnen.

Aus diesem Grund wird es zu einer Herausforderung, unter Linux die richtige Datei oder den richtigen Ordner zu finden, wenn Sie sie benötigen. In diesem Artikel erfahren Sie, wie Sie den Linux-Befehl FIND verwenden, und wir geben Ihnen so viele Beispiele wie möglich.

Linux FIND-Befehlssyntax

Syntax bezieht sich darauf, wie Wörter oder Befehle zusammengesetzt werden. So wie ein normaler Satz durch einfaches Mischen der Wörter zu Unsinn werden kann, können Befehle fehlschlagen, wenn sie nicht in der richtigen Syntax verwendet werden.

finde [Pfad] [Bedingungen] [Aktionen]

Das bedeutet Folgendes:

find – startet das Suchdienstprogramm unter Linux

Pfad – wo man suchen muss

Bedingungen – Argumente, die Sie auf die Suche anwenden möchten

Aktionen – was Sie mit den Ergebnissen machen möchten

Ein einfaches Beispiel, das alle drei verwendet, sieht so aus:

finden . -name file-sample.rtf -print

Wie Sie vermutet haben, wird hier der Dateiname file-sample.rtf gefunden.

Der Pfad mit dem Punkt (. ) weist find an, im aktuellen Verzeichnis und allen darin enthaltenen Verzeichnissen zu suchen.

Die -name Bedingung weist find an, die Datei mit diesem spezifischen Namen abzurufen.

Die Aktion -print weist FIND an, die Ergebnisse auf dem Bildschirm anzuzeigen.

Punkt und -print sind Standardwerte für den Suchbefehl. Es wird also immer noch das Gleiche tun, wenn Sie sie nicht verwenden. Mit find -name file-sample.rtf erhalten Sie also die gleichen Ergebnisse.

Linux FIND in einem anderen Verzeichnis

Sie können in einem anderen Verzeichnis als dem, in dem Sie sich befinden, suchen. Geben Sie einfach den Pfad zu dem Verzeichnis nach FIND ein. Wenn Sie sich im Stammverzeichnis befinden und wissen, dass sich die Datei irgendwo im Verzeichnis home/user befindet, würden Sie Folgendes verwenden:

finden Sie home/user -name file-sample.rtf

Es handelt sich immer noch um eine rekursive Suche, daher wird jedes Verzeichnis unter Benutzer durchsucht..

Linux FIND Mehrere Verzeichnisse durchsuchen

Wenn Sie in mehreren Verzeichnissen gleichzeitig suchen möchten, listen Sie diese einfach im Befehl auf, getrennt durch ein Leerzeichen.

find /lib /var /bin -name file-sample.rtf

Linux FIND ohne oder mit eingeschränkter Rekursion

Wenn Sie den obigen FIND-Befehl auf der Root-Ebene verwenden würden, würde er jedes Verzeichnis im System durchsuchen. Wenn Sie also nur beim aktuellen Verzeichnis bleiben möchten, verwenden Sie die Option -maxlength . Die Zahl nach -max Depth gibt an, wie tief Find vor dem Anhalten vordringen muss.

Die Verwendung von -max Depth 1 bedeutet nur dieses Verzeichnis.

find -name file-sample.rtf -maxlength 1

Die Verwendung von -max Depth 2 oder einer höheren Zahl bedeutet, dass Sie um so viele Ebenen tiefer gehen.

find -maxlength 5 -name file-sample.rtf

Linux FIND Wildcard-Beispiel

Der FIND-Befehl verwendet das Sternchen (* ) als Platzhalter. Verwenden Sie es für jeden Teil des Namens, bei dem Sie sich nicht sicher sind. Es kann im Namen mehrfach verwendet werden. Ohne den Dateityp als Teil des Dateinamens enthalten die Ergebnisse auch übereinstimmende Verzeichnisse.

home/user-name file*sample* finden

Linux FIND by Type Beispiel

Um nur nach einer Datei oder einem Verzeichnis zu suchen, verwenden Sie die Option -type und den entsprechenden Deskriptor. Es gibt einige, aber die Dateien und Verzeichnisse sind am häufigsten:

f – Datei

d – Verzeichnis

b – Gerät blockieren

c – Zeichengerät

l – symbolischer Link

s – Socket

find home/user -name file*sample* -type d

Linux FIND Beispiel ohne Berücksichtigung der Groß-/Kleinschreibung

Im Gegensatz zu Windows ist es bei Linux wichtig, ob ein Buchstabe groß oder klein geschrieben ist. Wenn Sie also möchten, dass sowohl nach File-Sample.rtf als auch nach file-sample.rtf gesucht wird, verwenden Sie die Option -iname .

find home/user -iname File-Sample.rtf

Linux FIND Mehrere Dateien – Beispiel

Angenommen, Sie möchten die .rtf- und .html-Versionen einer Datei finden. Dies kann in einem Befehl mit dem Operator -o (oder) erfolgen. In einigen Distributionen müssen Sie die Namen möglicherweise in Klammern setzen, z. B. ( -name file-sample.rtf -o -name file-sample.html ) ..

find home/user -name file-sample.rtf -o -name file-sample.html

Linux FINDEN Sie Dateien, die nicht mit einem Namen übereinstimmen

Vielleicht wissen Sie, dass es die .html-Version einer Datei gibt, aber nicht, wenn es andere gibt. Mit der Option -not .

können Sie die .html-Version aus der Suche herausfiltern

find home/user -name file-sample* -not -name *.html

Linux FIND ohne Fehlerergebnisse

Beachten Sie, dass im Beispiel „Suche ohne Rekursion“ alle Verzeichnisse aufgeführt wurden, in denen nicht gesucht werden konnte, und dass das richtige Ergebnis angezeigt wurde. Das nervt. Lassen Sie uns verhindern, dass alle Verzeichnisse mit der Bezeichnung „Berechtigung verweigert“ angezeigt werden. Kombinieren Sie es mit einem anderen Linux-Terminalbefehl, grep. Sie können Find auch mit grep to Finden Sie Dateien mit bestimmten Wörtern.

verwenden

find -maxlength 5 -name file-sample.rtf 2>&1 | grep -v „Berechtigung verweigert“

Lassen Sie uns 2>&1 aufschlüsseln.

2 – steht für stderr, was die Abkürzung für Standardfehlerausgabe ist.

1 – steht für stdout, die Abkürzung für Standardausgabe

> – bedeutet, dass die Ausgabe links davon auf die Ausgabe rechts davon umgeleitet wird.

& – bedeutet zusammenfügen.

Also bedeutet 2>&1 , die Standardfehler zu nehmen, sie umzuleiten und sie dann zusammen mit der Standardausgabe in einer Ausgabe zusammenzufügen.

Jetzt schauen wir uns | an grep -v „Berechtigung verweigert“ .

| (Pipe genannt) – weist Linux an, die Ergebnisse von allem, was sich links davon befindet, an alles weiterzugeben, was sich rechts davon befindet. Es wird dem Befehl grep übergeben.

grep – ist ein Textsuchdienstprogramm.

-v – weist grep an, nach allem zu suchen, was nicht mit dem Text links von -v übereinstimmt. In diesem Fall wird grep angewiesen, nur alles zu finden, was den Text oder die Zeichenfolge „Permission denied“ nicht enthält. grep zeigt Ihnen also nur die gewünschten Ergebnisse und alle Fehler an, die nicht mit „Berechtigung verweigert“ übereinstimmen.

Linux FIND by Permissions-Beispiel

.

Um dies gut zu nutzen, müssen Sie Lernen Sie Linux-Berechtigungen.

Die Beispieldateien haben alle die Berechtigungen 664, außer einer mit den Berechtigungen 775. Verwenden Sie die Option -perm , um sie zu finden.

find Documents/ -name file-sample* -type f -perm 775

Linux FIND by Size Beispiel

Das Finden von Dateien nach Größe ist praktisch, um zu sehen, wie große Dateien Ihre Festplatte füllen. Verwenden Sie die Option -size, die gewünschte Größe und eines der folgenden Suffixe. Wenn kein Suffix verwendet wird, ist -size standardmäßig b . Um Dateien zu finden, die einer bestimmten Größe entsprechen oder größer sind, setzen Sie das Pluszeichen (+) vor die Größe.

M – Megabyte

G – Gigabyte

k – Kilobyte

b – Blöcke (512 Bytes – Standard)

c – Bytes

w – Wörter (zwei Bytes zusammen)

find -size +500k

Linux FIND nach Besitzer

Es gibt zwei Möglichkeiten, Dateien nach Eigentümer zu suchen. Einer bezieht sich auf den Benutzernamen eines Eigentümers und der andere auf die Gruppe des Benutzers. Um nach Benutzernamen zu suchen, verwenden Sie die Option -user , gefolgt vom Benutzernamen. Um nach Benutzergruppe zu suchen, verwenden Sie -group gefolgt vom Gruppennamen.

find -user groupname oder find -user username

Linux FIND-Dateien nach zuletzt geändertem Beispiel

Um Dateien zu finden, die in den letzten X Tagen geändert oder bearbeitet wurden, verwenden Sie -mtime gefolgt von einer Zahl. Wenn Sie der Zahl ein Minuszeichen ( ) voranstellen, wird festgestellt, dass sich innerhalb dieser Anzahl von Tagen zuvor alles geändert hat. Ein Pluszeichen (+ ) bedeutet innerhalb von so vielen Tagen bis jetzt.

find -name „file-sample*“ -mtime +5 (vor mehr als 5 Tagen)

find -name „file-sample*“ -mtime -5 (vor weniger als 5 Tagen)

Um nach der letzten Änderung in Minuten zu suchen, verwenden Sie die Option -mmin gefolgt von der Anzahl der Minuten. Verwenden Sie + und – wie oben.

find -name „file-sample*“ -mmin -5

find -name „file-sample*“ -mmin +5

Linux FIND Files by Last Access Time Beispiel

.

Die Option zum Suchen von Dateien basierend auf dem Zeitpunkt ihres letzten Öffnens ist -atime für Tage und -amin für Minuten. Geben Sie anschließend die Anzahl der Tage oder Minuten ein, um zurückzugehen, und verwenden Sie die Zeichen + und – für „größer als“ und „kleiner als“.

find -name „file-sample*“ -atime -5

find -name „file-sample* -amin -5

Kombinieren Sie FIND mit anderen Linux-Befehlen

Oben gibt es ein Beispiel für die Verwendung von find mit dem grep-Befehl, und Sie können es mit vielen anderen verwenden. Sie sehen, dass die Verwendung von find und anderen Befehlen sehr leistungsfähig sein und eine enorme Zeitersparnis bedeuten kann. Stellen Sie sich vor, Sie müssten eine Menge Dateien eines bestimmten Typs löschen. Anstatt im Datei-Explorer herumzusuchen, erstellen Sie einfach den richtigen Befehl, und schon ist es in Sekundenschnelle erledigt. Wie werden Sie den Suchbefehl jetzt verwenden?

.

Zusammenhängende Posts:


18.01.2022