Häufiger braucht man die Möglichkeit, schnell über die Shell nach bestimmten Dateien zu suchen. Nachfolgend möchte ich meine häufig genutzten Snippets vorstellen, welche im Alltagsgebrauch schon vielfach in Anspruch genommen wurden.
Find:
Suche nach bestimmten Dateinamen oder Eigenschaften von Dateien:
find [Suchort] Kriterium [Optionen]
Alle Dateien und Ordner im gesuchten Verzeichnis rekursiv auflisten:
find /verzeichnis/
Zusätzliche Dateiinformationen (Rechte, Dateigröße und Änderungszeit) zu den Suchergebnissen ausgeben:
find /verzeichnis/ -ls
Nach einem bestimmten Dateinamen im gesamten System suchen, wenn die Art der Datei nicht bekannt ist:
find / -name dateiname.*
Suche nach allen PDFs im Ordner ebooks:
find /ebooks -name *.pdf
Nach einer bestimmten Textdatei mit dem namen foo im gesamten System suchen :
find / -name foo.txt
Suche nach der Datei foo.txt in mehreren bestimmten Ordnern:
find /verzeichnis1 /verzeichnis2/unterverzeichnis -name foo.txt
Sollte der ausführende Benutzer nicht die Rechte haben, einzelne Ordner zu sehen, können während des Suchvorgangs Fehler auftauchen. Diese Meldungen können ganz einfach durch Anfügen von dem folgenden Befehl ausgeblendet werden (funktioniert bei jedem find-Aufruf):
find / -name foo.txt 2>/dev/null
Auflisten aller Ordner, welche den Namen ordner im Namen tragen:
find / -type d -name "*ordner*"
Das Gleiche auch nur für Dateien:
find / -type f -name "*datei*"
Dateien finden, dessen Dateigröße mehr als 15 MB beträgt:
find /pictures -size +15M
Finde Dateien, welche innerhalb der letzten sieben Tage geändert wurden. Gleiches gilt auch für ctime (Änderung des Dateistatus von Namen oder Rechten), bzw. atime für den Zeitpunkt des letzten Dateizugriffs:
find /pictures -mtime -7
Es kann -amin, -cmin oder -mmin genutzt werden, um nach Änderungen in genaueren Minutenabfragen zu unterscheiden, z.B. das Auflisten aller Dateien mit einer Änderung innerhalb der letzten 60 Minuten :
find /pictures -mmin -60
Finde alle Dateien des Benutzers foo:
find /pictures -user foo