Website-Suche

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 -prune mit anderen Suchoptionen
  • Verwenden mehrerer -prune-Optionen fü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
  1. Verwenden von -prune zum Ausschließen eines Verzeichnisses: Die Option -prune kann verwendet werden, um ein Verzeichnis und seinen Inhalt von der Suche auszuschließen.

    find . -path "./dir1" -prune -o -print

    Mit diesem Befehl werden dir1 und sein Inhalt aus den Suchergebnissen ausgeschlossen. Die Option -path gibt das auszuschließende Verzeichnis an, und die Option -prune verhindert, dass find in dieses Verzeichnis absteigt. Der Operator -o (OR) ermöglicht es, die Suche in anderen Verzeichnissen fortzusetzen, und -print zeigt die Ergebnisse an.

  2. Mehrere Verzeichnisse ausschließen: Sie können mehrere Verzeichnisse ausschließen, indem Sie mehrere -prune-Optionen kombinieren.

    find . -path "./dir1" -prune -o -path "./dir5" -prune -o -print

    Mit diesem Befehl werden sowohl dir1 als auch dir5 aus den Suchergebnissen ausgeschlossen.

  3. 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 -print

    Dieser Befehl schließt alle Verzeichnisse mit dem Namen dir4 aus den Suchergebnissen aus.

  4. Kombinieren von -prune mit anderen Suchoptionen: Sie können -prune mit anderen Suchoptionen kombinieren, um Ihre Suche zu verfeinern.

    find . -path "./dir1" -prune -o -type f -name "*.txt" -print
  5. Dieser Befehl schließt dir1 aus und sucht nach .txt Dateien in anderen Verzeichnissen.

  6. 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
  7. Dieser Befehl schließt sowohl dir1 als auch dir5 aus und listet alle Dateien in anderen Verzeichnissen auf.

  8. Verwendung der Option -not: Die Option -not kann auch zum Ausschluss verwendet werden.

    find . -not -path "./dir1/*" -print

    Dieser Befehl schließt alle Dateien und Verzeichnisse unter dir1 aus.

  9. 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 -print
  10. Dieser Befehl schließt dir2 innerhalb von dir1 aus, wenn die Tiefe größer als 2 ist.

  11. Erweiterte 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
  12. 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.

Verwandte Artikel: