So schließen Sie Verzeichnisse von der Suche nach dem Suchbefehl unter Linux aus
In diesem Artikel werden wir uns mit den Methoden zum expliziten Ausschließen von Verzeichnissen von der Suche des Befehls find unter Linux befassen. Der Befehl find ist ein leistungsstarkes Dienstprogramm für die Suche nach Dateien und Verzeichnissen innerhalb einer Verzeichnishierarchie. Es gibt jedoch Szenarien, in denen Sie bestimmte Verzeichnisse von Ihrer Suche ausschließen möchten, um den Prozess zu beschleunigen oder irrelevante Ergebnisse zu vermeiden. Wir werden verschiedene Optionen untersuchen und praktische Beispiele anhand einer Sandbox-Verzeichnisstruktur vorstellen.
In diesem Tutorial lernen Sie:
- So verwenden Sie die Option
-prune, um Verzeichnisse auszuschließen - Kombinieren von
-prunemit anderenSuchoptionen - Verwenden mehrerer
-prune-Optionenfür komplexe Ausschlüsse - So schließen Sie Verzeichnisse mithilfe von Pfadnamen aus
- Ausschließen von Verzeichnissen basierend auf Mustern
- Erweiterte Verwendung mit logischen Operatoren
- Beispiele aus der Praxis mit unterschiedlichem Ausschlussbedarf
- Verstehen der Auswirkungen von Ausschlüssen auf die Leistung
Ausschließen von Verzeichnissen aus der Suche des Befehls "Suchen"
Wenn Sie mit dem Befehl find arbeiten, müssen Sie möglicherweise bestimmte Verzeichnisse aus den Suchergebnissen ausschließen. Dies kann besonders nützlich sein, wenn Sie mit großen Verzeichnisstrukturen arbeiten oder wenn Sie sich auf bestimmte Bereiche Ihres Dateisystems konzentrieren möchten. Hier sind einige Methoden, um dies zu erreichen, veranschaulicht mit Beispielen, die auf der folgenden Sandbox-Struktur basieren:
.
├── dir1
│ ├── dir2
│ │ └── dir3
│ │ └── file2
│ └── file1
├── dir4
│ └── file3
└── dir5
└── dir6
├── dir4
│ └── file4
└── file4
Verwenden von -prune zum Ausschließen eines Verzeichnisses: Die Option
-prunekann verwendet werden, um ein Verzeichnis und seinen Inhalt von der Suche auszuschließen.find . -path "./dir1" -prune -o -printMit diesem Befehl werden
dir1und sein Inhalt aus den Suchergebnissen ausgeschlossen. Die Option-pathgibt das auszuschließende Verzeichnis an, und die Option-pruneverhindert, dassfindin dieses Verzeichnis absteigt. Der Operator-o(OR) ermöglicht es, die Suche in anderen Verzeichnissen fortzusetzen, und-printzeigt die Ergebnisse an.Mehrere Verzeichnisse ausschließen: Sie können mehrere Verzeichnisse ausschließen, indem Sie mehrere
-prune-Optionenkombinieren.find . -path "./dir1" -prune -o -path "./dir5" -prune -o -printMit diesem Befehl werden sowohl
dir1als auchdir5aus den Suchergebnissen ausgeschlossen.Ausschließen von Verzeichnissen nach Namensmuster: Verwenden Sie die Option
-name, um Verzeichnisse auszuschließen, die einem bestimmten Muster entsprechen.find . -name "dir4" -prune -o -printDieser Befehl schließt alle Verzeichnisse mit dem Namen
dir4aus den Suchergebnissen aus.Kombinieren von -prune mit anderen Suchoptionen: Sie können
-prunemit anderenSuchoptionenkombinieren, um Ihre Suche zu verfeinern.find . -path "./dir1" -prune -o -type f -name "*.txt" -print-
Ausschließen von Verzeichnissen mit einem komplexen Muster: Verwenden Sie eine Kombination von Optionen für komplexere Ausschlüsse.
find . \( -path "./dir1" -o -path "./dir5" \) -prune -o -type f -print Verwendung der Option -not: Die Option
-notkann auch zum Ausschluss verwendet werden.find . -not -path "./dir1/*" -printDieser Befehl schließt alle Dateien und Verzeichnisse unter
dir1aus.Ausschließen von Verzeichnissen basierend auf der Tiefe: Steuern Sie die Tiefe der Suche, um tiefere Verzeichnisse auszuschließen.
find . -maxdepth 2 -path "./dir1/dir2" -prune -o -printErweiterte Verwendung mit logischen Operatoren: Kombinieren Sie logische Operatoren für erweiterte Ausschlüsse.
find . -path "./dir1" -prune -o -type f \( -name "*.sh" -o -name "*.py" \) -print
Dieser Befehl schließt dir1 aus und sucht nach .txt Dateien in anderen Verzeichnissen.
Dieser Befehl schließt sowohl dir1 als auch dir5 aus und listet alle Dateien in anderen Verzeichnissen auf.
Dieser Befehl schließt dir2 innerhalb von dir1 aus, wenn die Tiefe größer als 2 ist.
Dieser Befehl schließt dir1 aus und sucht nach .sh und .py Dateien in anderen Verzeichnissen.
Schlussfolgerung
Das Ausschließen von Verzeichnissen aus der Suche des Befehls find kann Ihre Dateisuche erheblich optimieren und die Effizienz verbessern. Durch das Verständnis und die Verwendung von Optionen wie -prune, -path und logischen Operatoren können Sie Ihre Suchvorgänge an bestimmte Anforderungen anpassen und irrelevante Ergebnisse vermeiden. Üben Sie mit den bereitgestellten Beispielen und passen Sie diese an Ihre eigenen Verzeichnisstrukturen und Suchanforderungen an.



