Heim >System-Tutorial >LINUX >So finden Sie ein Verzeichnis in Linux aus der Befehlszeile
Sie können keinen Ordner im Linux -System finden? Mach dir keine Sorgen! Linux bietet leistungsstarke Befehlszeilen-Tools, um fehlende Verzeichnisse zu finden. Das häufigste Tool ist der Befehl find
, mit dem Sie Verzeichnisse basierend auf verschiedenen Kriterien durchsuchen können. In diesem Handbuch werden verschiedene Möglichkeiten eingeführt , um Verzeichnisse in Linux -Systemen zu finden .
Zunächst werden wir demonstrieren, wie das Verzeichnis nach Namensuche durchsucht. Wir werden dann demonstrieren, wie man die zuletzt modifizierten Verzeichnisse und die in den letzten n -Tagen modifizierten Verzeichnissen findet. Sie werden auch lernen, wie man ältere Verzeichnisse identifiziert - diese vor naggregierten n -tageliden modifizierten.
Als nächstes werden wir erklären, wie Sie mit den Optionen maxdepth
und mindepth
nach einem Verzeichnis innerhalb eines bestimmten Tiefenbereichs suchen. Sie lernen, wie Sie Verzeichnisse finden, die auf Berechtigungen für Verzeichnisse und Verzeichnisse basieren, die eine bestimmte Anzahl von Dateien enthalten.
Schließlich werden wir erklären, wie Sie nach leeren Verzeichnissen suchen, was sehr nützlich ist, um ungenutzte oder unnötige Teile des Dateisystems zu identifizieren.
Im gesamten Leitfaden geben wir praktische Beispiele an, mit denen Sie den Befehl find
bei der Verwendung von Verzeichnissen unter Linux nutzen können.
Inhaltsverzeichnis
Wenn Sie den Namen des Verzeichnisses kennen und wo die Suche beginnt, verwenden Sie den folgenden Befehl:
Finden/Pfad/to/such -typ d -name "Directory_Name"
Ersetzen /path/to/search
durch den tatsächlichen Pfad und "directory_name"
durch das Zielverzeichnis.
Beispiel:
$ find ~/ -type d -name "Dokumente"
Dieser Befehl beginnt mit der Suche nach einem Verzeichnis mit dem Namen "Dokumente" aus dem Heimverzeichnis des Benutzers (~/).
Hier ist eine Aufschlüsselung der Befehle:
find ~/
: Beginnen Sie mit der Suche aus dem Home -Verzeichnis des Benutzers (~/).-type d
: Erlisten Sie find
, nach Verzeichnissen (-typ D) anstelle von normalen Dateien zu suchen.-name "Documents"
: Diese Option gibt find
, um ein Verzeichnis mit dem Namen "Dokumente" zu finden. Zitate auf beiden Seiten von "Dokumenten" stellen sicher, dass die Suche nach genauen Namen sucht und nicht nur Verzeichnisse, die das Wort "Dokumente" enthalten.Daher wird dieser Befehl das Heimverzeichnis des Benutzers und alle seine Unterverzeichnisse für jedes Verzeichnis "Dokumente" durchsucht. Wenn Verzeichnisse gefunden werden, wird der vollständige Pfad zu diesen Verzeichnissen gedruckt.
Wenn Sie Ihre Suche aus dem aktuellen Verzeichnis anstelle des Home -Verzeichnisses (~/) aus starten möchten, können Sie den ~/ Teil des Befehls wie folgt einfach weglassen:
$ find.
Hier finden Sie eine Aufschlüsselung der Funktionen für jede Option:
find .
.
-type d
: Erlisten Sie find
, das Verzeichnis zu durchsuchen.-name "Documents"
: Diese Option gibt find
, um ein Verzeichnis mit dem Namen "Dokumente" zu finden.In diesem Befehl wird das aktuelle Verzeichnis und alle seine Unterverzeichnisse durchsucht, ein Verzeichnis mit dem Namen "Dokumente" finden und den vollständigen Pfad zu diesen Verzeichnissen drucken.
Alternativ können Sie auch die $PWD
-Variable verwenden, die das aktuelle Arbeitsverzeichnis wie folgt darstellt:
$ find $ pwd -Typ d -name "Dokumente"
Beide Befehle erzielen das gleiche Ergebnis, beginnend mit dem aktuellen Verzeichnis.
Dies ist eine sehr nützliche Flagge im Befehl find
.
Wir können die Option -iname
anstelle von -name
verwenden, um Fall -unempfindliche Suche durchzuführen.
Hier ist ein Beispiel für die Verwendung -iname
anstelle von -name
:
$ find.
-iname "Documents"
-Aption entspricht Verzeichnissen mit Namen wie "Dokumenten", "Dokumenten", "Dokumenten" usw. Dies ist nützlich, wenn Sie sich über den genauen Fall des Verzeichnisnamens nicht sicher sind.
Der Hauptunterschied zwischen -name
und -iname
ist:
-name
führt Fallempfindlichkeitsuche durch, sodass es nur Verzeichnisse übereinstimmt, die genau den gleichen Fall sind wie das bereitgestellte Muster.-iname
führt Fall-unempfindliche Suche durch, sodass es unabhängig von seinem Fall mit dem Verzeichnis übereinstimmt.Sie können auch Suchbegriffe in Wildcards wie folgt einfügen:
$ find.
Dieser Befehl listet alle Verzeichnisse im aktuellen Verzeichnis (und in seinen Unterverzeichnissen) auf, die "Dokumente" in ihren Namen enthalten.
Die Verwendung -iname
ist möglicherweise bequemer, wenn Sie den genauen Fall des von Ihnen gesuchten Verzeichnisnamens nicht kennen oder sich nicht kümmern.
Wenn ich nach etwas suche, bevorzuge ich es, die Option -iname
im Befehl find
zu verwenden.
Wenn Sie -type d
aus dem Befehl find
entfernen, werden nach Dateien und Verzeichnissen gesucht, die anderen Kriterien wie -name
oder -iname
-Optionen entsprechen.
Der Befehl lautet wie folgt:
$ find.
Hier ist was, was passiert:
find
sucht das aktuelle Verzeichnis (.) Und alle seine Unterverzeichnisse für jedes Projekt (Dateien und Verzeichnisse) mit dem Namen "Dokumente" (Fallunempfindlichkeit).Daher umfasst die Ausgabe dieses Befehls:
Durch das Löschen -type d
wird die Suche breiter, da sie Verzeichnisse und Dateien enthält, die dem angegebenen Namensmuster übereinstimmen.
Dies ist nützlich, wenn Sie sich nicht sicher sind, ob der von Ihnen gesuchte "Dokumente" ein Verzeichnis oder eine Datei ist und Sie alle Ereignisse finden möchten.
Wenn Sie jedoch speziell nach Verzeichnissen suchen, die als "Dokumente" bezeichnet werden, ist es besser, -type d
zu behalten, um Ihre Suche einzugrenzen.
Verwenden Sie -newermt
zweimal, um Verzeichnisse aufzulisten, die in einem bestimmten Datumsbereich geändert wurden.
Um beispielsweise nach Verzeichnissen zu suchen, die zwischen dem 15. März 2024 und dem 15. April 2024 (ohne diese zwei Tage) erstellt oder geändert wurden), können Sie verwenden:
$ find/path/to/such -type d -newerm "2024-03-15"!
Hier ist eine Aufschlüsselung der oben genannten Befehle:
find /path/to/search
: Teilen Sie den Befehl zum find
von Suchen aus /path/to/search
.-type d
: Diese Option stellt sicher, dass find
nur Verzeichnisse sucht, nicht normale Dateien.-newermt "2024-03-15"
: Diese Option gibt an, dass find
nur Verzeichnisse enthält, die aktualisiert (erstellt oder geändert) als 15. März 2024 enthalten sind.find
! -newermt "2024-04-15"
!
Die Kombination dieser Optionen führt dazu, dass find
-Suchverzeichnis am oder nach dem 15. März 2024 erstellt oder geändert wird, jedoch vor dem 15. April 2024.
Dies kann beispielsweise nützlich sein, wenn Sie alle in einem bestimmten Zeitraum erstellten oder geänderten Verzeichnisse finden möchten (z. B. für Sicherungen oder Prüfung).
Um Verzeichnisse zu finden, die in den letzten n Tagen geändert wurden, verwenden Sie -mtime
.
Der folgende Befehl sucht nach dem in den letzten 7 Tagen im Rahmen des ~/ projects/ Verzeichnisses geänderten Verzeichnisse.
$ find ~/ projects/ -type d -mtime -7
Hier ist, was jeder Teil des Befehls tut:
find ~/Projects/
: Teilen Sie den Befehl find
, mit der Suche aus dem ~/ projects/ Verzeichnis zu suchen.-type d
: Diese Option stellt sicher, dass find
nur Verzeichnisse sucht, nicht normale Dateien.-mtime -7
: In dieser Option soll find
nur Verzeichnisse einbeziehen, die in den letzten 7 Tagen geändert wurden ("M" in "-Mtime" bedeutet "Zeit modifizieren"). Das Arbeitsprinzip -mtime -7
-Teils lautet wie folgt:
Dies ist beispielsweise sehr nützlich, wenn Sie alle neuen Verzeichnisse finden möchten, die kürzlich im ~/ projects/ Verzeichnis erstellt oder aktualisiert wurden (möglicherweise für Sicherungen oder Verfolgung).
Um ein Verzeichnis zu finden, das vor n Tagen modifiziert wurde (d. H. (Finden Sie ein Verzeichnis, das vor n Tagen war), verwenden Sie -mtime
mit einem Pluszeichen.
Beispielsweise sucht der folgende Befehl nach dem vor 7 Tagen gemäß dem ~/ projects/ Verzeichnis geänderten Verzeichnis.
$ find ~/ projects/ -type d -mtime 7
Mit anderen Worten, es wird in den letzten 7 Tagen nach Verzeichnissen suchen, die nicht geändert (erstellt, aktualisiert oder zugegriffen) wurden.
-mtime 7
gibt find
an, nur Verzeichnisse zu enthalten, deren Änderungszeit ("m" in "-mtime") mehr als 7 Tage ist.
Daher kann dieser Befehl verwendet werden, um Verzeichnisse zu finden, die für einen bestimmten Zeitraum nicht berührt oder geändert wurden. Dies ist hilfreich, um nicht verwendete oder veraltete Verzeichnisse oder Aufgaben wie Wartung/Reinigung der Projektverzeichnisstruktur auszuführen.
Woher wissen wir, ob das Verzeichnis tatsächlich vor x Tagen geändert wurde? Sehr einfach.
Um zu überprüfen, ob das vom Befehl find
gefundene Verzeichnis vor 7 Tagen geändert wurde, können Sie den Befehl stat
verwenden, um die Änderungszeit für jedes Verzeichnis anzuzeigen.
$ find ~/ projects/ -type d -mtime 7 -exec stat -c ' %n %y' {} \;
Das Folgende ist die Erklärung des obigen Befehls:
find ~/Projects/ -type d -mtime 7
: Dieser Befehlsteil ist der gleiche wie zuvor. Finden Sie das Verzeichnis vor 7 Tagen.stat
' find
-exec stat -c '%n %y' {} \;
-exec
stat -c '%n %y'
: stat
zeigt den Dateinamen (%n) des Verzeichnisses und die letzte modifizierte Zeit (%y) an.{}
: Dies ist ein Platzhalter, ersetzt durch das aktuelle Verzeichnis, das von find
gefunden wurde.\;
-exec
Wenn Sie diesen Befehl ausführen, wird der Pfad angezeigt und die letzte modifizierte Zeit jedes Verzeichnisses vor 7 Tagen. Auf diese Weise können Sie überprüfen, ob das gefundene Verzeichnis tatsächlich vor 7 Tagen geändert wurde.
Hier ist ein Ausgabebeispiel:
<code>/home/ostechnix/Projects/Python 2024-03-22 14:18:14.958042173 0530 /home/ostechnix/Projects/Vim 2024-03-22 14:05:55.887041168 0530</code>
Die in der Ausgabe angezeigte Änderungszeit hilft Ihnen zu bestätigen, dass das Verzeichnis tatsächlich länger als 7 Tage dauert, wie dies vom ursprünglichen find
fund erforderlich ist.
Wir können das Verzeichnis innerhalb des angegebenen Tiefenbereichs mit den Optionen maxdepth
und mindepth
des Befehls find
durchsuchen.
Das Folgende ist die Syntax:
Finden/Pfad/to/suche -depth x -maxDepth y -Typ D.
Lassen Sie mich erklären, was jede Option in diesem Befehl tut:
find /path/to/search
: Teilen Sie den Befehl zum find
von Suchen aus /path/to/search
.-mindepth X
: Diese Option legt die Mindesttiefe des Verzeichnisses so ein, dass sie in die Suchergebnisse einbezogen werden. Der Wert X repräsentiert die minimale Anzahl von Verzeichnisstufen ab dem Startpunkt.-maxdepth Y
: Diese Option legt die maximale Tiefenstufe des Verzeichnisses fest, die in die Suchergebnisse einbezogen werden. Der Wert y stellt die maximale Anzahl von Verzeichnisniveaus dar, die vom Startpunkt ab dem Ausgangspunkt beginnen.-type d
: Diese Option stellt sicher, dass find
nur Verzeichnisse sucht, nicht normale Dateien.Beachten Sie, dass die Option
-mindepth
Option vor anderen Parametern, einschließlich-type
, angegeben werden sollte.
Um beispielsweise nach einem Verzeichnis zu suchen, können Sie /Projects
folgenden Befehl verwenden:
$ find ~/projects -mdepth 2 -maxdepth 4 -Typ D.
Dieser Befehl sucht Verzeichnisse (enthalten) (enthalten) mindestens 2 Ebenen tief und bis zu 4 Schichten tief in Bezug auf das Verzeichnis /Projects
.
Sie können die Werte von x und y entsprechend Ihren spezifischen Anforderungen einstellen. Wenn Sie beispielsweise nach einem Verzeichnis suchen möchten, das genau 3 Ebenen tief sind, können Sie verwenden:
$ find ~/projects -mdepth 3 -maxdepth 3 -Typ D.
Dies enthält in den Suchergebnissen nur 3-layer-tiefe Verzeichnisse.
Durch die Verwendung maxdepth
und mindepth
in Kombination können Sie Ihre Suche auf einen bestimmten Bereich der Verzeichnistiefe einschränken, was für die Organisation und Verwaltung von Dateisystemen sehr nützlich ist.
Um ein Verzeichnis zu finden, das auf Berechtigungen des Verzeichnisses basiert, können Sie den Befehl find
mit der Option -perm
verwenden.
Finden/Pfad/to/such -typ d -perm<permission_specification></permission_specification>
Ersetzen /path/to/search
durch das Verzeichnis, das Sie mit der Suche beginnen möchten und<permission_specification></permission_specification>
Ersetzen Sie durch die erforderlichen Berechtigungen. Sie können Berechtigungen mit Octal Notation angeben.
Lassen Sie mich Ihnen einige Beispiele zeigen.
Alle Verzeichnisse mit den Berechtigungen zu finden
$ find.
Um Verzeichnisse zu finden, in denen der Eigentümer RWX -Berechtigungen hat, verfügt die Gruppe über RX -Berechtigungen, und andere haben keine Berechtigungen:
$ find.
Alle Verzeichnisse in ~/Projekten zu finden, in denen der Eigentümer über Berechtigungen und Gruppen verfügt und andere RX -Berechtigungen haben:
$ find ~/projects ~ -typ d -perm -005
Sie können sich entsprechend Ihren spezifischen Anforderungen anpassen<permission_specification></permission_specification>
. Zusätzlich können Sie -maxdepth
und -mindepth
verwenden, um die Tiefe der Suche bei Bedarf zu steuern.
Um Verzeichnisse zu finden, die eine bestimmte Anzahl von Dateien enthalten, können Sie find
, wc
und Bash in Kombination verwenden.
Beispiel:
Der folgende Befehl sucht nach Verzeichnissen, die zufällig 4 Dateien im aktuellen Verzeichnis und seine Unterverzeichnisse enthalten und den vollständigen Pfad zu diesen Verzeichnissen drucken.
$ find.
Lassen Sie uns Schritt für Schritt den Befehl aufschlüsseln:
find . -type d
exec
find
-exec bash -c '...' _ {} \;
if [ $(find "$1" -maxdepth 1 -type f | wc -l) -eq 4 ]; then echo "$1"; fi
$(find "$1" -maxdepth 1 -type f | wc -l)
: Dieser Abschnitt berechnet die Anzahl der Dateien (nicht die Verzeichnisse) im aktuellen Verzeichnis ("$ 1"). -maxdepth 1
stellt sicher, dass sie nur Dateien im aktuellen Verzeichnis berechnet und nicht Dateien im Unterverzeichnis.[ ... -eq 4 ]
: Dies überprüft, ob die Anzahl der Dateien im aktuellen Verzeichnis genau 4 beträgt.then echo "$1"; fi
Dies wäre beispielsweise nützlich, wenn Sie eine bestimmte Reihe von Verzeichnissen haben, die eine bestimmte Anzahl von Dateien enthalten sollten, und Sie möchten schnell alle Verzeichnisse identifizieren, die diese Kriterien nicht erfüllen.
Um ein leeres Verzeichnis zu finden, verwenden Sie die Flagge -empty
:
Finden Sie/Pfad/to/such -typ -
Um beispielsweise nach einem leeren Verzeichnis im Verzeichnis "Arbeit" zu suchen, rennen Sie:
$ find ~/ work/ -typ d -ingy
Denken Sie daran, den Pfad nach Bedarf anzupassen.
In diesem Leitfaden haben Sie mehrere Techniken für die Suche nach Verzeichnissen in Linux -Systemen mit dem Befehl find
gelernt.
Sie können nach dem Namen, zum letzten Mal der Änderung oder nach Anzahl der internen Dateien suchen. Sie können sogar leere Ordner oder Ordner mit spezifischen Berechtigungen finden.
Wenn Sie lernen, wie Sie Optionen wie maxdepth
, mindepth
und size
verwenden, können Sie Ihre Suche verbessern, um sich auf die spezifischen Verzeichnisse zu konzentrieren, die Sie benötigen.
Deshalb in Panik in Panik, wenn der Ordner das nächste Mal verloren geht! Verwenden Sie diese find
-Befehle, um es zu verfolgen und die Datei organisiert zu halten.
Das obige ist der detaillierte Inhalt vonSo finden Sie ein Verzeichnis in Linux aus der Befehlszeile. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!