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.
Beispielchen mit find
Um allen Dateien andere Rechte zu geben
find . -type f -exec chmod g+r {} \;
Um allen Directories die Leserechte für Fremde ('o') zu nehmen
find . -type d -exec chmod o-x {} \;
Alle Dateien, die älter sind als 5 Tage
find . -mtime +5 -print
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
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