Ubuntu – Find – Mit der Konsole Dateien finden

Ein häufiges Problem ist, dass man Dateien, die man irgendwo abgelegt hatte, nicht finden kann. Man kann natürlich über die Linux Dist UI die Dateien in Files / Dateieinmanager suchen. Aber warum sollte man nicht das Kommandozeilen-Terminal dazu nutzen? Insbesondere wenn Du über SSH auf dem Server eingeloggt bist, geht es ja nur mit Konsole. Und hier gibt es einige nette Programme. Wenn es um die Suche nach Dateien anhand ihres Namens geht, sind zwei erwähnenswert. Diese zwei möchte ich an dieser Stelle vorstellen und auf auf eins etwas genauer eingehen. Bei der Suche nach Dateien anhand ihres Inhaltes ist grep die erst Wahl. Dazu habe ich hier bereits einen Artikel geschrieben.

Dateien suchen mit find

„Find“ ist ein sehr komplexer Befehl, mit dem du Dateien auf der Grundlage einer Vielzahl von Bedingungen suchen können. Es ist ein sehr hilfreiches Werkzeug, wenn Du eine Datei anhand derer Namen suchst. Auch wenn man sich nicht mehr an den ganzen Namen erinnern kann, kann man mit Platzhaltern arbeiten. Mit dem Befehl “find” kannst du Datei- und Ordnernamen, Dateien nach Erstellungsdatum, Änderungsdatum und Berechtigungen suchen. Man kann diese Bedingungen auch im find Command kombinieren. „Find“ ist ein sehr leistungsstarkes, aber dennoch langsameres Suchwerkzeug. Langsam in der unixoiden Welt. Im Vergleich zu Windows ist es schnell.

Startpunkt

Zuerst musst man find mitteilen von wo an man suchen will. Also den <Startpunkt> nennen.

find  
// sucht im aktuellen Verzeichnis

find /documents
// sucht im Verzeichnis "/documents".
 
find /documents /trash
// sucht in den Verzeichnissen "/documents" und "/trash"
 
find ~
// sucht in deinem Benutzerverzeichnis
 
find /
// sucht echt überall 

Dateiname

Als nächstes muss man find sagen, wonach man eigentlich sucht <Dateiname>. Hier hat man die wahl zwischen -iname und -name. Mit -iname wird nicht Casesensitiv gesucht.

find <Startpunkt> -(i)name "<Dateiname>" 

Falls Du zum Beispiel eine Migration Laravel Datei suchst und nicht den ganzen Namen eingeben willst, aber weißt es handelt sich um einen Namen wo products enthalten ist, dann kannst Du die mit Platzhaltern suchen.

find /database/migrations/ -name “*produtcs_*.php“ 

Oder Du suchst eine json Datei, wo du weisst das der Dateiname 6 Zeichen lang ist.

find /documents -name "??????.json"

Wenn Du nach leeren Dateien suchst, machst Du das mit:

find /kontoauszuege (-iname “*.pdf“) -empty

Wenn Du nach leeren Dateien suchst, machst Du das mit:

find /kontoauszuege (-iname “*.pdf“) -empty

Suche anhand von Datum und Uhrzeit

Mit „find“ kannst Du auch anhand des Datums nach Dateien suchen. Je nachdem, wann sie aufgerufen oder geändert wurden. Es gibt verschiedene Zeitangaben, die man für die Suche nach Dateien verwenden kann:

mtime (Modifikationszeit): wann der Inhalt der Datei zuletzt geändert wurde.
attime (Zugriffszeit): wann das letzte Mal auf die Datei zugegriffen wurde.
ctime (Änderungszeit): wann die Dateiattribute das letzte Mal geändert wurden.

Um z. B. nach Dateien in einem aktuellen Verzeichnis zu suchen, die vor weniger als 14 Tagen geändert wurden, führe den folgenden Befehl im Terminal aus:

find /app/models/ -mtime -14

Suche auf Basis der Dateigröße

Um z. B. Nach eine Datei zu suchen, deren Größe größer als 900 MB ist, können wir den folgenden Befehl im Terminal verwenden:

find /videos –size +900M\ 

Suche anhand von Dateiberechtigungen

Du suchst Dateien mit bestimmten Berechtigungen. Die allgemeine Syntax wäre hier:

 find /vendor/ -type -perm mode 

Wobei:

Der Parameter type erwartet die Werte d oder f. D steht für Directories / Ordner und f für File / Datei. Mit mode kann man entweder mit numerischer Berechtigung (z. B. 777, 655… usw.) oder mit symbolischer Berechtigung (z. B. u=x, a=r+x) suchen.

Um z. B. nach einer Datei mit der Berechtigung 644 zu suchen, können wir den folgenden Befehl im Terminal verwenden:

find /vendor -type f -perm 644 

Das waren die wichtigsten Suchoptionen mit find. Es gibt noch einige weitere Suchparameter. Du findest die, wenn du in deiner Konsole „man find“ eingibst.

Suche nach Dateien mit locate

locate ist verdammt schnell. Hat aber einen Nachteil. Die Suchergebnisabdeckung ist wechselhaft. Das liegt am System von locate. Locate arbeitet mit einer internen Datenbank und iteriert die Dateien deiner Ordner vorab. Somit kann es viel schneller als find zum gewünschtem Suchergebnis führen. Locate macht sinn, wenn man ein relativ statisches Dateiensystem hat. Du kannst aber natürlich regelmäßig die locate Datenbank aktualisieren. Mit dem Befehl:

sudo updatedb 

Da locate nicht standardmäßig in den Linux Dist enthalten ist, musst Du locate installieren.

sudo apt-get install locate 

Und dann kann die Suche auch schon losgehen. Der Syntax ist

locate -i <Dateiname>

locate –i todo.txt 

Und jetzt wünsch ich euch ein happy Searching!


Leave a Comment

Your email address will not be published. Required fields are marked *

*

*

Empfholende Artikel


SVG zu PNG konvertieren

March 20, 2021

Als Webentwickler kommt man um das SVG Format nicht mehr herum. Und das ist auch gut so! Das Thema SVG in der Webentwicklung ist vielseitig und umfänglich. Es fängt an, wie man SVG Grafiken am elegantesten in sein Projekt einbindet und endet wie man sein Webpack diesbezüglich konfiguriert. Wenn man überhaupt mit Webpack arbeitet und […]

Ubuntu VLC Player DVD spielt nicht ab

March 14, 2021

Man hat sich eine DVD Bestellt. In meinem Fall war es Fargo. Nicht die Serie sondern der Originalfilm aus dem Jahr 1996. Für alle die den Film nicht kennen: „Es lohnt sich“. Jedenfalls wollte ich den Film über Laptop schauen. Ich leg die Scheibe ein und öffne den VLC Player. Menüpunkt Media → Open Disc […]

Ubuntu – Firefox Sessions Backup

February 7, 2021

Wenn irgendwann mal das Internet für längere Zeit ausfallen sollte – Stichwort Cloudausfall – wäre ich gewappnet. Ich habe das Internet bei Firefox in meinen Tabs offen. Vielleicht gehört ihr auch zu denen, die über 1000 Tabs offen haben. Warum auch immer. Wahrscheinlich könnte man darüber eine Doktorarbeit schreiben. Mit dem Titel: „Persönlichkeitsanalyse anhand des […]

Bash Script – kurz mal erklärt

February 2, 2021

Heute mal eine einfache Sache, falls man sie Klever einsetzt, eine Menge Arbeit abnehmen kann. Die Rede ist vom guten alten Shell-Script. Wer ständig die gleichen Befehle absetzen muss, der kann sich doch automatisieren. Ich zum Beispiel nutze Shell Script für das Deployment Prozess. Also den fertigen Code von der Entwicklungsumgebung in die Produktionsumgebung zu […]

MySQL Datenbankserver im lokalen Netzwerk einrichten

November 19, 2020

Es kommt mal vor, dass man beim Entwickeln die Test, Entwickler Datenbank nicht auf einem Liveserver sowie auf dem lokalen Rechner einrichten möchte. Und arbeiten an der Livedatenbank sollten sowieso keine Option sein. Jedenfalls kann der Wunsch nach einer Testdatenbank, die nicht auf dem Entwicklerrechner installiert ist unterschiedliche Gründe haben. Ein häufiger Grund ist wohl, […]

SSH Authentifizierung mit dem SSH Public Key einrichten

November 16, 2020

Die schlüsselbasierte Authentifizierung in SSH wird als Authentifizierung mit öffentlichem Schlüssel / Public Key bezeichnet. Mit ssh-copy-id kann man leicht die Authentifizierung mit dem SSH Public Key einrichten. Der Prozess läuft wie folgt ab. Generieren zuerst einen SSH-Schlüssel / SSH Key Mit OpenSSH wird ein SSH-Schlüssel mit ssh-keygen erzeugt. Führe den Befehl ssh-keygen aus und […]