Benutzer-Werkzeuge

Webseiten-Werkzeuge


find

Dies ist eine alte Version des Dokuments!


find

Hier zeige ich nur ein paar erprobte Beispiele.


mit dieser Kommandozeile werden alle Dateien und Verzeichnisse angezeigt, dessen Benutzer und Gruppe nicht "www-data" sind:

> find ${ZIELVERZ} ! -user www-data -o ! -group www-data

…und hiermit werden die Dateien nicht angezeigt, sondern direkt angepasst:

> find ${ZIELVERZ} ! -user www-data -o ! -group www-data -exec chown www-data:www-data {} \;

mit dieser Kommandozeile kann man die Dateien finden und deren Rechte korrigieren, die nicht von allen Benutzern lesbar sind:

> find /var/www/ -type f -not -perm -444
> find /var/www/ -type f -not -perm -444 -exec chmod 0644 {} \;

mit dieser Kommandozeile kann man die Verzeichnisse finden und deren Rechte korrigieren, die für seinen Benutzer nicht beschreibbar sind:

> find /var/www/ -type d -not -perm -700
> find /var/www/ -type d -not -perm -700 -exec chmod 0755 {} \;
> find * -type d -perm u=rwx,g=rx,o=rx
> find * -type f -perm u=rw,g=r,o=r

https://wiki.ubuntuusers.de/chmod/

> find /var/www/ \( -type d -exec chmod 755 {} + \) -o \( -type f -exec chmod 644 {} + \)

so listet man alle Dateien aus diesem Verzeichnis auf, die maximal einen Tag lang nicht mehr geöffnet wurden:

> find . -type f -atime -1

so listet man alle Dateien aus diesem Verzeichnis auf, die mindestens 7 Tage lang nicht mehr geöffnet wurden:

> find . -type f -atime +7

alles was länger als 6 Minuten nicht mehr verändert wurde, löschen

> find */ -type f -mmin +6 -exec /bin/rm -rf {} \;

alles was länger als 100 Tage nicht mehr verändert wurde, löschen

> find /var/log/jasmin/ -type f -mtime +100 -exec /bin/rm -rf {} \;

so listet man alle Dateien aus diesem Verzeichnis auf, die mindestens 7 Tage lang nicht mehr geöffnet wurden oder vor mindestens 4 Tagen verändert wurden:

> find . -type f -atime +7 -o -mtime +4

so listet man alle Dateien aus diesem Verzeichnis auf, die mindestens 7 Tage lang nicht mehr geöffnet wurden und die Zeichenfolge "robots" im Namen haben:

> find / -type f -atime +7 -name '*robots*'

atime/mtime/ctime: Zeit-Attribute einer Datei im unixoiden Dateisystem

Will man veraltete Dateien finden, durchsucht man natürlich die "atime" aller Dateien. Hier ein paar Beispiele…

alle ausführbaren Dateien ausgeben lassen:

> find /mnt -type f -executable -print

Zugriffsrechte auf alle Verzeichnisse setzen:

> find /mnt -type d -execdir chmod 0775 '{}' \;

Zugriffsrechte auf alle Dateien setzen:

> find /mnt -type f -execdir chmod 0664 '{}' \;

Dateien nach alter suchen

alle Dateien im /tmp/-Verzeichnis finden, die älter als 60 Minuten sind:

> time find /tmp/ -maxdepth 2 -type f -mmin +60 -print

alle Dateien im /tmp/-Verzeichnis finden, die jünger als 60 Minuten sind:

> time find /tmp/ -maxdepth 2 -type f -mmin -60 -print

bestimmte Unterverzeichnisse löschen

alle /tmp/tmp.xxxxxxxxx-Verzeichnisse (z.B. "/tmp/tmp.5Tu5kaJvYH") löschen, die älter als 60 Minuten sind:

> time find /tmp/ -maxdepth 2 -type d -mmin +60 -print | fgrep /tmp/tmp. | xargs rm -fr ${1}

leere Unterverzeichnisse löschen

rekursiv:

> find . -mindepth 1 -type d -empty -depth -exec rmdir {} \;

rekursiv, wenn es besonders viele sind:

> find . -mindepth 1 -type d -empty -depth -print | xargs rmdir

leeren Unterverzeichnisse mit rmdir löschen: leeren_unterverzeichnisse_loeschen

find mit REGEX verwenden

die REGEX muß für die komplette Zeile formuliert werden, sonst geht es nicht:

> find . -regex '.*/[a-f0-9\-\_][a-f0-9\-\_]*.jpg'

mit REGEX vom Typ "sed":

> find . -regextype sed -regex '.*/[a-f0-9\-\_][a-f0-9\-\_]*.jpg'
/home/http/wiki/data/attic/find.1644239429.txt · Zuletzt geändert: von manfred