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


Count files via the CLI in a folder (also recursive)

December 5, 2022

For example, you want to know how many files are in your Laravel vendor folder. To do this, go to the project folder with your console. Now you can count the files with find. If you don’t want a recursion and just want to know how many folders and files a certain path has, you […]

Symlinks – Was sind symbolische Links

March 11, 2022

Bei einem aktuellen Projekt bin ich auf ein außergewöhnliches deployment gestoßen. Außergewöhnlich aber nicht negativ wertend gemeint. Halt nicht “state of the art”. Stack: Amazon EC2 Server mit einem NGINX Webserver. Der Ablauf ist wie folgt. Der Order html unter dem Pfad /usr/share/nginx/html war ein Symlink auf ein Verzeichnis im selben Pfad. Nennen wir den […]

Odt Dateien in ein PDF konvertieren

January 4, 2022

Möchte man über die Commandline aus einer odt Datei eine PDF machen, brinbt libre Office von Hause auch gleich ein Headless Tool mit. libreoffice –headless –convert-to pdf textdatei.odt und schubdiwup, da ist das neue PDF.

Mit sed Text in einer Datei ändern

November 20, 2021

Wer über die CLI in einer Textdatei etwas editieren möchte greift für gewöhnlich zu nano, vim etc. Aber es gibt auch eine andere Möglichkeit in einer Textdatei etwas zu ändern. Über eine Stream (Stream Edit). Das kann zum Beispiel bei einem Deploymentscript sinnvoll sein. Wenn man zum Beispiel ein Deploymentscript hat und mit Release Ordner […]

Verschlüsseltes Zip über die Kommandozeile erstellen

November 9, 2021

Folgendes Szenario. Ihr seid via SSH auf einem Server der nicht mehr ansprechbar ist. Um die Dateien zu sichern erstellt ihr rasch ein ZIP von den Dateien die gesichert werden müssen. Das geht schnell mit: zip -re outputfileName.zip input folder/file r = rekursive = encryption

What does the -p option stand for in mkdir?

November 4, 2021

If you want to create several directories with the command mkdir you use the -p option. But what does the -p stand for? One could assume it stands for “Path”. But no. It stands for “parent”. And the flag is needed to create a parent directory if it is required. If you try to create […]