find [PFAD] [SUCHKRITERIEN]
Werden keine Kriterien angegeben, so zeigt find alle Dateien im Verzeichnis und seinen Unterverzeichnissen an. Wird kein Pfad angegeben, so dient das aktuelle Arbeitsverzeichnis als Startverzeichnis. Um die Anzahl der gefundenen Dateien einzuschränken, können Kriterien für die Eigenschaften der gesuchten Dateien angegeben werden. Tabelle 11.1 liefert einen Überblick über die wichtigsten Kriterien.
Einzelne Suchkriterien sind logisch verknüpfbar, d. h., es können Suchkriterien aus verschiedenen Teilbedingungen zusammengesetzt werden. Numerische Angaben als Bestandteil eines Suchkriteriums lassen sich auf drei Weisen benutzen:
N, +N und -N, wobei N eine ganze Zahl ist.
Das Kriterium -links veranlaßt z. B. eine Suche nach Dateien mit einer bestimmten Anzahl von Links und erfordert eine entsprechende numerische Angabe. So bedeuten
-links 3 | Suche nach Dateien mit 3 Links |
-links +3 | Suche nach Dateien mit mehr als 3 Links |
-links -3 | Suche nach Dateien mit weniger als 3 Links |
find -name "super*"
find /usr -type d -print
sucht nach allen Verzeichnissen, die unterhalb von /usr existieren und zeigt ihre Pfadnamen an.
find / -name tty* -print
liefert die Pfade aller Dateien des gesamten Dateisystems, die mit ``tty'' beginnen.
find / -user 406 -ok rm {} \;
sucht im gesamten Dateisystem nach Dateien des Benutzers mit der uid 406. Gefundene Dateien werden bei positiver Beantwortung einer Sicherheitsabfrage gelöscht.
find . -newer .version_time -print
zeigt alle Dateien des aktuellen Verzeichnisses, die jüngeren Datums sind als die Datei .version_time.
find / -size +10k -user tapico -print
zeigt alle Dateien die größer als 10 kB sind und dem Benutzer tapico gehören.
find ~ -atime -10 -print
findet alle Dateien, auf die innerhalb der letzten 10 Tage zugegriffen wurde.
Bei Angabe von mehreren Kriterien wird immer von einer UND-Verknüpfung ausgegangen.
find / -size +10k -user tapico -print
zeigt alle Dateien die größer als 10 kB sind und dem Benutzer tapico gehören.
Dies kann durch -a betont werden.
find / -size +10k -a -user tapico -print
Eine ODER-Verknüpfung erreicht man durch -o.
find ~ -name '*.htm' -o -name '*.html' -print
sucht nach allen Dateien, die auf ``.htm'' oder ``.html'' enden.
Die Negation eines Kriteriums wird durch das ! erreicht.
find / \! -name '*~' -print
findet alle Dateien, die nicht mit einem Tilde ~
enden. Allerdings stellt die Verwendung des Negationsoperators ``!'' ein Problem dar, da dieser in der Bash eine besondere Bedeutung hat. Er muß deshalb maskiert werden. Im Zweifelsfall bietet es sich an die längere Version -not zu verwenden.
Der Befehl find kann auch zur Suche nach weiteren Hardlinks einer Datei verwendet werden.
ole@enterprise:~> ls -li /bin/gzip 926671 -rwxr-xr-x 3 root root 52964 2003-09-23 18:52 /bin/gzip ole@enterprise:~> find /bin -inum 926671 /bin/gzip /bin/zcat /bin/gunzip