Wie immer wird in einer kurzen Einführung in den Befehl Wikipedia für seine Definition zitiert:
“find” ist ein auf Unix – Systemen gebräuchlicher Befehl, der verwendet wird, um Dateien in einem bestimmten Verzeichnis anhand verschiedener Suchregeln zu finden, z. B. exakter Dateiname, Erstellungsdatum, Größe, Berechtigungen usw., die sehr flexibel werden und Eines der nützlichsten Tools in der Systemadministration, wenn Sie wissen, wie man es verwendet.
Auf GNU / Linux-Systemen ist es Teil des findutils-Pakets. ”
Die Verwendung von ” Suchen” ist sehr umfangreich. Ich werde das Tutorial in fünf Teile unterteilen und die Suchen nach Namen, Berechtigungen, Benutzern, Gruppen und Größe sortieren.
- Teil 1. Einfache Suche nach dem Namen der Datei / des Verzeichnisses.
- Teil 2. Suchen Sie nach Dateien basierend auf Ihren Berechtigungen.
- Teil 3. Suche nach Benutzern und Gruppen filtern.
- Teil 4. Führen Sie eine Suche basierend auf Daten durch.
- Teil 5. Suchen Sie nach Dateien und Verzeichnissen anhand ihrer Größe.
Ich werde einige reale Beispiele verwenden, die in Ihrem Alltag vorkommen können, um die Suche nach Dateien und Verzeichnissen zu beschleunigen. Dies sind Beispiele, die Sie in Ihrem Alltag verwenden können und die Sie sogar in Skripten verwenden können, um einige Aufgaben zu automatisieren.
1. Einfache Suche nach dem Namen der Datei / des Verzeichnisses
Suchen Sie alle Dateien mit dem Namen solvetic.txt in dem Verzeichnis, in dem Sie sich befinden.
finden -name solvetic.txt
Durchsuchen Sie alle Dateien mit dem Namen solvetic.txt im Verzeichnis / home
find / home-name solvetic.txt
Suchen Sie alle Dateien mit dem Namen solvetic.txt in / home, unabhängig von Groß- oder Kleinschreibung.
find / home -iname solvetic.txt
Durchsuchen Sie alle Verzeichnisse mit dem Namen solvetic im gesamten System.
find / -type d -name solvetic
Suche nur die PHP-Dateien mit dem Namen TechnoWikis im aktuellen Verzeichnis.
finden -type f -name solvetic.php
Suche alle PHP-Dateien im aktuellen Verzeichnis
finden -type f -name "* .php"
Gehen wir nun zu Teil 2, in dem nach Berechtigungen gesucht wird.
2. Suchen Sie anhand Ihrer Berechtigungen nach Dateien
Suchen Sie nach allen Dateien im aktuellen Verzeichnis, die über 777 Berechtigungen verfügen
finden -type f -perm 0777 -print
Durchsuchen Sie alle Dateien auf dem System, die keine 644-Berechtigungen haben
find / -type f! -perm 644
Durchsuchen Sie alle Dateien mit der SGID 644
find / -perm 2644
Durchsuchen Sie alle Dateien mit Sticky , die über Berechtigungen 551 im gesamten System verfügen.
find / -perm 1551
Durchsuchen Sie alle Dateien mit speziellen Benutzerberechtigungen ( SUID )
find / -perm / u = s
Durchsuchen Sie alle Dateien mit SGID- Berechtigungen (Special Groups).
find / -perm / g + s
Durchsuchen Sie alle Dateien, die Schreibgeschützt sind
find / -perm / u = r
Suchen Sie nach allen Dateien, die über ausführbare Berechtigungen verfügen.
find / -perm / a = x
Durchsuchen Sie alle Dateien mit den Berechtigungen 777 und ändern Sie sie mit chmod in 644.
find / -type f -perm 0777 -print -exec chmod 644 {} ;
Durchsuche alle Verzeichnisse mit 775 Berechtigungen und ändere sie mit chmod auf 644
find / -type d -perm 775 -print -exec chmod 644 {} ;
Suchen Sie die Dateien mit dem Namen solvetic.txt im aktuellen Verzeichnis und löschen Sie sie mit rm.
finden -type f -name "solvetic.txt" -exec rm -f {} ;
Löschen Sie alle Dateien in einem Verzeichnis mit derselben Erweiterung
finden -type f -name "* .txt" -exec rm -f {} ;
Durchsuchen Sie alle leeren Dateien in einem bestimmten Verzeichnis.
finde / etc / html / www / -type f -leer #Extrem nützlich
Suche nach leeren Verzeichnissen in einem bestimmten Pfad (Unterordner sind enthalten).
find / etc -type d -leer
Suche alle versteckten Dateien in einem bestimmten Verzeichnis.
find / tmp -type f -name ". *" #Alles, mit dem Sie beginnen, wird durchsucht.
Nun geht es mit dem Suchfilter weiter.
3. Filtern Sie die Suche nach Benutzern und Gruppen
Durchsuchen Sie alle Dateien und Verzeichnisse mit dem Namen solvetic, die dem Root-Benutzer gehören.
find / -user root -name solvetic
Durchsuchen Sie alle Dateien, die dem Benutzer so und so gehören, in allen Home-Verzeichnissen des Systems.
find / home -user fulanito
Durchsuchen Sie alle Dateien im System, die zur Administratorgruppe gehören
find / -group admin
Durchsuchen Sie alle TXT-Dateien des Benutzers jcarrillo im Ausgangsverzeichnis.
find / home -user jcarrillo -iname "* .txt"
Jetzt gehen wir mit Suchen mit Daten.
4. Führen Sie die Suche nach Datum durch
Durchsuchen Sie die geänderten Dateien der letzten 50 Tage.
find / -mtime 50
Durchsuchen Sie alle Dateien, die in den letzten 50 Tagen angezeigt oder geöffnet wurden, unabhängig davon, ob sie geändert wurden oder nicht.
find / -atime 50
Durchsuchen Sie die geänderten Dateien zwischen 50 und 100 Tagen.
find / -mtime +50 -mtime -100
find / -amin -60
Mit diesem letzten Befehl werden die Dateien angezeigt, auf die in der letzten Stunde zugegriffen wurde.
5. Suchen Sie anhand ihrer Größe nach Dateien und Verzeichnissen
Suchen Sie nach Dateien, die genau 50 MB wiegen.
find / -size 50M
Suchen Sie Dateien zwischen 50 MB und 100 MB
find / -size + 50MB -size -100M
Suchen und Löschen von Dateien, die größer als 100 MB sind (Vorsicht bei diesem Befehl kann es schwierig sein).
find / -size + 100M -exec rm -rf {} ;
Durchsuchen Sie alle MP3-Dateien mit mehr als 10 MB und löschen Sie sie.
find / -type f -name * .mp3 -size + 10M -exec rm {} ;
Zum Schluss sehen wir uns den Befehl find in Unix an.
6. So verwenden Sie den Befehl “Suchen” in Unix
Die Version von find in Unix weist mehrere Fehler auf, daher müssen wir unseren Befehl ändern, um das gewünschte Ergebnis zu erzielen. Beispiel:
finden 50M | xargs ls -l
finden -size 50M -print0 | xargs -0 ls -l
Auf der Scriptebene sind alle Ergebnisse mit find positiv, unabhängig davon, ob wir Ergebnisse erhalten oder nicht. Unter Linux haben wir die Option -print -quit, falls keine Ergebnisse erzielt werden.
In der Version von Find in Unix fehlt diese Option. Verwenden Sie sie am besten neben grep, um beispielsweise das Ergebnis zu überprüfen.
lies -ra wenn finden. -maxtiefe 1 -name "$ a" -print -quit | grep -q. dann Echo "Datei gefunden" sonst echo "Es wurde keine Datei gefunden" fi
Dies bestätigte das Ergebnis.
Der Befehl ist für eine unendliche Anzahl von Situationen erforderlich und jeder Systemadministrator muss wissen, wie er verwendet wird. Wir haben verschiedene Situationen erlebt und kombinieren ihn mit Bash- und Wildcards. Wir haben ein sehr leistungsfähiges Tool, mit dem wir Bereinigungsskripte, Organisation und Backup erstellen können.