Benutzer-Werkzeuge

Webseiten-Werkzeuge


find

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
find [2017-11-29 20:50:59] manfredfind [2024-03-20 15:57:54] (aktuell) – [Dateien nach alter suchen] manfred
Zeile 1: Zeile 1:
 +====== find ======
 +
 +  * [[https://wiki.ubuntuusers.de/find/]]
 +  * [[http://doc-tcpip.org/Unix/find-cmd.html]]
 +  * [[http://media.fossclub.de/tutorial-find.html]]
 +  * [[http://www.sascha-theves.de/techno/linux-file-permissions/]]
 +  * [[http://www.wirtschaftsinformatik-24.de/shell-programmierung/find-befehl-linux.php]]
 +
 +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 (jünger als 1 Tag sind):
 +  > 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: [[::edv#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 7 Tage sind:
 +  > find /tmp/ -type f -mtime +7 -print
 +
 +alle Dateien im ''/tmp/''-Verzeichnis finden, die älter als 60 Minuten sind:
 +  > find /tmp/ -maxdepth 2 -type f -mmin +60 -print
 +
 +alle Dateien im ''/tmp/''-Verzeichnis finden, die jünger als 60 Minuten sind:
 +  > 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: [[bash#leeren_unterverzeichnisse_loeschen]]
 +
 +
 +==== find mit REGEX verwenden ====
 +
 +  * [[http://stackoverflow.com/questions/6844785/how-to-use-regex-with-find-command]]
 +
 +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'
 +