Kombinieren mehrerer Suchkriterien
Der find
-Befehl wird noch leistungsfähiger, wenn Sie mehrere Suchkriterien kombinieren. Sie können logische Operatoren verwenden, um komplexe Suchmuster zu erstellen.
Verwenden der UND-Logik
Standardmäßig verwendet find
, wenn Sie mehrere Kriterien angeben, die UND-Logik, was bedeutet, dass alle Bedingungen erfüllt sein müssen. Beispielsweise können Sie alle Textdateien größer als 100 Bytes finden:
find ~/project/files -type f -name "*.txt" -size +100c
Dieser Befehl findet Dateien, die sowohl Textdateien sind UND größer als 100 Bytes.
Verwenden der ODER-Logik mit -o
Um die ODER-Logik zu verwenden, können Sie die Option -o
nutzen. Beispielsweise können Sie Dateien finden, die entweder Textdateien ODER PDF-Dateien sind:
find ~/project/files -type f \( -name "*.txt" -o -name "*.pdf" \)
Beachten Sie die Verwendung von Klammern, die mit Backslashes maskiert werden müssen. Dieser Befehl findet Dateien, die eine der beiden Bedingungen erfüllen.
Die Ausgabe sollte Folgendes enthalten:
/home/labex/project/files/documents/report.txt
/home/labex/project/files/documents/notes.txt
/home/labex/project/files/documents/important_report.txt
/home/labex/project/files/documents/exact_size.txt
/home/labex/project/files/documents/project.pdf
Verwenden der NICHT-Logik mit !
Um eine Bedingung zu negieren, verwenden Sie den !
-Operator. Beispielsweise können Sie alle Dateien finden, die keine Textdateien sind:
find ~/project/files -type f ! -name "*.txt"
Dieser Befehl findet alle Dateien, die nicht die .txt
-Erweiterung haben.
Komplexe Beispiele
Versuchen wir einige komplexere Kombinationen. Beispielsweise können Sie alle Dateien finden, die:
- Entweder JPG- oder PNG-Bilder sind UND
- Größer als 0 Bytes sind
find ~/project/files -type f \( -name "*.jpg" -o -name "*.png" \) -size +0c
Um alle Dateien im documents
-Verzeichnis zu finden, die keine PDF-Dateien sind:
find ~/project/files/documents -type f ! -name "*.pdf"
Erstellen wir einige zusätzliche Dateien, um eine komplexere Suche zu demonstrieren:
## Create some large and small image files
echo "This is a large JPG file" > ~/project/files/images/large_image.jpg
for i in {1..50}; do
echo "Adding content to make this file larger." >> ~/project/files/images/large_image.jpg
done
touch ~/project/files/images/empty_image.png
Jetzt finden wir alle Bilddateien (JPG oder PNG), die entweder leer sind ODER größer als 1 KB:
find ~/project/files/images -type f \( -name "*.jpg" -o -name "*.png" \) \( -size 0 -o -size +1k \)
Dieser komplexe Befehl zeigt, wie Sie ausgefeilte Suchkriterien erstellen können, indem Sie mehrere Bedingungen mit logischen Operatoren kombinieren.