In einem kürzlich erschienenen Opensource.com-Artikel stellte Lewis Cowles den find
vor Befehl.
find
ist eines der leistungsstärkeren und flexibleren Befehlszeilenprogramme in der täglichen Toolbox, daher lohnt es sich, etwas mehr Zeit damit zu verbringen.
Zumindest find
nimmt einen Weg, um Dinge zu finden. Zum Beispiel:
find /
findet (und druckt) jede Datei auf dem System. Und da es sich bei allem um eine Datei handelt, erhalten Sie eine Menge Ausgaben zum Sortieren. Dies hilft Ihnen wahrscheinlich nicht, das zu finden, wonach Sie suchen. Sie können das Pfadargument ändern, um die Dinge ein wenig einzugrenzen, aber es ist immer noch nicht wirklich hilfreicher als die Verwendung von ls
Befehl. Sie müssen also darüber nachdenken, was Sie finden möchten.
Vielleicht möchten Sie alle JPEG-Dateien in Ihrem Home-Verzeichnis finden. Der -name
Mit dem Argument können Sie Ihre Ergebnisse auf Dateien beschränken, die dem angegebenen Muster entsprechen.
find ~ -name '*jpg'
Aber warte! Was ist, wenn einige von ihnen eine Erweiterung in Großbuchstaben haben? -iname
ist wie -name
, aber Groß- und Kleinschreibung wird nicht beachtet.
find ~ -iname '*jpg'
Toll! Aber das 8.3-Namensschema ist so 1985. Einige der Bilder haben möglicherweise eine .jpeg-Erweiterung. Glücklicherweise können wir Muster mit einem „oder“ kombinieren, dargestellt durch -o
.
find ~ ( -iname 'jpeg' -o -iname 'jpg' )
Wir kommen näher. Aber was ist, wenn Sie einige Verzeichnisse haben, die auf jpg enden? (Warum Sie ein Verzeichnis bucketofjpg
genannt haben statt pictures
ist mir ein Rätsel.) Wir können unseren Befehl mit dem -type
ändern Argument um nur nach Dateien zu suchen.
find ~ \( -iname '*jpeg' -o -iname '*jpg' \) -type f
Oder vielleicht möchten Sie diese seltsam benannten Verzeichnisse finden, damit Sie sie später umbenennen können:
find ~ \( -iname '*jpeg' -o -iname '*jpg' \) -type d
Es stellt sich heraus, dass Sie in letzter Zeit viele Bilder gemacht haben, also beschränken wir uns auf Dateien, die sich in der letzten Woche geändert haben.
find ~ \( -iname '*jpeg' -o -iname '*jpg' \) -type f -mtime -7
Weitere Linux-Ressourcen
- Spickzettel für Linux-Befehle
- Spickzettel für fortgeschrittene Linux-Befehle
- Kostenloser Online-Kurs:RHEL Technical Overview
- Spickzettel für Linux-Netzwerke
- SELinux-Spickzettel
- Spickzettel für allgemeine Linux-Befehle
- Was sind Linux-Container?
- Unsere neuesten Linux-Artikel
Sie können Zeitfilter basierend auf der Änderungszeit des Dateistatus (ctime
), Änderungszeit (mtime
) oder Zugriffszeit (atime
). Diese sind in Tagen angegeben, wenn Sie also eine genauere Kontrolle wünschen, können Sie sie stattdessen in Minuten ausdrücken (cmin
, mmin
, und amin
, bzw). Wenn Sie die gewünschte Uhrzeit nicht genau kennen, stellen Sie der Nummer wahrscheinlich +
voran (mehr als) oder –
(weniger als).
Aber vielleicht interessieren Sie sich nicht für Ihre Bilder. Vielleicht geht Ihnen der Speicherplatz aus, also möchten Sie alle gigantischen (definieren wir das als "größer als 1 Gigabyte") Dateien im log
finden Verzeichnis:
find /var/log -size +1G
Oder vielleicht möchten Sie alle Dateien von bcotton in /data
finden :
find /data -owner bcotton
Sie können auch anhand von Berechtigungen nach Dateien suchen. Vielleicht möchten Sie alle weltweit lesbaren Dateien in Ihrem Home-Verzeichnis finden, um sicherzustellen, dass Sie nicht zu viel teilen.
find ~ -perm -o=r
Dieser Beitrag kratzt nur an der Oberfläche dessen, was find
tun können. Die Kombination von Tests mit boolescher Logik kann Ihnen eine unglaubliche Flexibilität geben, um genau die Dateien zu finden, nach denen Sie suchen. Und mit Argumenten wie -exec
oder -delete
, können Sie find
haben Handeln Sie nach dem, was es ... findet. Haben Sie einen beliebigen find
Ausdrücke? Teile sie in den Kommentaren!