Main /

Dateien Wiederfinden

Allgemein

Knowledge Base

Virtualisierung Emulation

Technik und Wissen

Community

Privat

%center%[[http://validator.w3.org/check?uri=referer|http://www.w3.org/Icons/valid-xhtml10.png]]%%

Dateien Wiederfinden

Suchen und finden von Dateien

Unter Linux eine Datei zu finden ist eigentlich ganz einfach:

 find . -name <Datei> -print

Wobei die Parameter folgende Bedeutung haben:
finden

  • (von wo) Der Punkt '.' steht für current directory, also von wo ich gerade bin
  • (was) '-name' was ich gerade suche hier der Name, andere sind -type, -mtime, ... .
  • (nach ...) '-print' ist für die Ausgabe nach.

Leider ist die Suche case-sensitive, das heißt Groß- und Kleinschreibung ist hier nicht egal.

 find . -iname <Datei> -print

Ist das case-insensitive pedant.
Kennt man allerdings nur noch Bruchstücke des Namens hilft folgendes:

 find . -iname '*teilstring*' -print

Dabei ist es ganz wichtig, das der teilstring in einfache Hochkommas sog. quotes gesetzt wird, sonst schlägt die Shell hier zu und ergänzt den teilstring schon mal. Sonst ganz nett, hier aber absolut hinderlich. Ein '*' Asterix besagt hier, beliebig viele Zeichen.

Beispiele mit find

Rechte von Dateien ändern

Bei Rechten sollte man grundsätzlich sehr vorsichtig agieren und niemals mit Zahlen im chmod Kommando arbeiten. Man sollte grundsätzlich nur die Buchstabenkombinationen von chmod nutzen, also u für User, g für Gruppeen, o für Other oder a für Alle. Dann ein plus für mehr Rechte geben und ein Minus für Rechte wegnehmen und dann das eigentliche Recht r für Read, w für Write und x für Execute. Ganz wichtig ist hier auch noch das man unterscheiden muss zwischen Dateien und Directorys, da Direktorys das executable Flag brauchen, wenn man in das Verzeichnis wechseln möchte.

Alle "Dateien" dürfen von Gruppen gelesen werden

 find . -type f -exec chmod g+r {} \;

Allen "Dateien" das Recht entziehen von anderen geschrieben zu werden

 find . -type f -exec chmod o-w {} \;

Um allen Directorys die Leserechte für Fremde ('o') zu nehmen

 find . -type d -exec chmod o-x {} \;

Rechte sollte man grundsätzlich vorsichtig vergeben und nicht mit der Gießkanne wie find. Wenn jemand fremdes eine Datei ausführen soll, braucht er diese nicht unbedingt zu lesen, schweige denn zu schreiben, somit sollte 'o-rw o+x' reichen.

Finden von Dateien, die nicht einem bestimmten Benutzer gehören

 find . \! -user foo -print

Finden nach Zeit

Alle Dateien, die älter sind als 5 Tage

 find . -mtime +5 -print

Alle Dateien, die älter sind als 5 Tage löschen

 find . -mtime +5 -exec rm -f {} \;

Alle Dateien, die genau 5 Tage alt sind

 find . -mtime 5 -print

Alle Dateien, die jünger als 5 Tage alt sind

 find . -mtime -4 -print

Alle Dateien, die älter sind als 5 Tage, wir wollen aber nur das 1. Directory sehen

 find . -maxdepth 1 -mtime +5 -print

Sucht alle 'jpg', 'gif' und 'png' Bilder und speichert diese in /tmp/allpictures, liegen die Bilder in Unterverzeichnissen, werden diese mit angelegt.

 find . \( -iname '*.jpg' -o -iname '*.gif' -o -iname '*.png' \) -exec cp --parents {} /tmp/allpictures \;

to be continued...

Schneller mit slocate

Wer das schon mal auf Platten jenseits von 10GB gemacht hat, wird feststellen, das es schon eine gewisse Zeit braucht, um die Datei(en) auch zu finden.

Dafür gibt es unter Unix ein extra Programm, slocate was hilft Dateien schneller zu finden, da alle Dateien schon mal irgendwann gesucht und indiziert wurden. In man slocate findet man mehr.

Leider ist die Syntax nicht ganz ähnlich, weshalb diese Zeilen auch entstanden sind.

 slocate -r '.*teilstring.*\.jar'

listet alle Dateien die einen teilstring enthalten und auf .jar enden. Auch hier wieder quotes allerdings ist hier der '.' ein beliebiges Zeichen und ein '*' Asterix sagt 0 oder ganz viele davon. Mehr zu regulären Ausdrücken natürlich im Wiki, aber diesmal auf englisch.

Zu welchem Portage Package gehört eine Datei

Es wird gerne mal versucht ein Package zu finden, das eine bestimmte Datei enthält.

 equery belongs <bestimmte Datei>

Einziger Nachteil, das Package muss bereits installiert sein, desweiteren muss das app-portage/gentoolkit installiert sein, was aber durch emerge gentoolkit mal eben installiert werden kann.

Portage File List Query en findet alle Dateien mit dem angegebenen Namen und listet diese auf, so findet man dann auch Packages ohne diese installiert zu haben.

Verwandte Themen

Links

Frische Änderungen (All) | Edit SideBar Zuletzt geändert am 26.03.2018 16:40 Uhr Seite Bearbeiten | Seitenhistorie
Powered by PmWiki