Anzeige:
Ergebnis 1 bis 2 von 2

Thema: findutils: "find" -- Problem mit "-mtime" und Unterverzeichnissen

  1. #1
    ... Avatar von drunkenPenguin
    Registriert seit
    Jan 2003
    Ort
    Hamsterdam
    Beiträge
    2.264

    findutils: "find" -- Problem mit "-mtime" und Unterverzeichnissen

    Hallo,

    Ich habe da ein etwas eigenwilliges Problem, das ich nicht in den Griff bekomme.
    Ich habe ein Verzeichnis, in dem sich Unterverzeichnisse verschiedensten Alters befinden ( > 365 Tage - aktuelles Datum).
    Nun moechte ich aber nur die Verzeichnisse finden, die ab der ersten Unterverzeichnissebene _ausschliesslich_ Dateien enthalten, die aelter als 365 Tage sind.
    Ich habe schon 'find /path -type d -mtime +365' versucht, aber da erhalte ich ebenso Unterverzeichnisse, die Dateien enthalten, die juenger als 365 Tage sind.

    Vielleicht hat jemand eine gute Idee, wie das mit find (oder auch was anderem zu loesen ist).

    Gruss,
    Daniel

  2. #2
    ... Avatar von drunkenPenguin
    Registriert seit
    Jan 2003
    Ort
    Hamsterdam
    Beiträge
    2.264
    Hallo,

    Ich habe jetzt doch endlich etwas selber gebastelt. Es ist nicht besonders schoen, funktioniert aber hinreichend.
    Leider habe ich es nicht geschafft, sed anstelle von awk zu verwenden.
    Wenn jemand dazu noch einen Einfall hat: nur her damit.

    Gruss,
    Daniel

    Code:
    #!/bin/sh
    
    # setze Minimalalter der zu suchenden Dateien
    if [ "ZZZ$1" == "ZZZ" ]; then
        IDLEDAYS=365
    else
        IDLEDAYS=$1
    fi
    
    # Hauptverzeichnis, in dem die entsprechenden Unterverzeichnisse liegen
    MAINPATH=/main/directory
    
    subs="
        ${MAINPATH}/sub1
        ${MAINPATH}/sub2
        ${MAINPATH}/sub3
        ${MAINPATH}/sub4
        ${MAINPATH}/sub5
    "
    
    
    # finde alle Verzeichnisse, die laenger als vor $IDLEDAYS Tagen geaendert wurden
    function find_dirs () {
        for sublevel in "$subs"; do
            find_older=""
            # finde zuerst Ordner im ersten Sublevel, die aelter als X Tage sind
            find_older="$(find $sublevel -xdev -maxdepth 1 -type d -mtime +$IDLEDAYS)"
            find_newer=""
            # suche nun in den gefundenen Ordnern nach Dateien, die juenger als X Tage sind
            find_newer="$(echo "$find_older" | while read a; do find "$a" -xdev -mtime -$IDLEDAYS; done)"
            find_stinky=""
            # kuerze die Pfadnamen der faulen Ordner bis auf die 4. Ebene ab
            find_stinky="$(echo "$find_newer" | awk -F"/" '{ print "/"$2"/"$3"/"$4"/"$5 }' | sort -u)"
            find_purified=""
            # filtere in der Liste der alten Ordner diejenigen heraus, die in der Liste der faulen Ordner auch enthalten sind
            find_purified="$(echo "$find_older" | grep -v "`echo "$find_stinky" | while read a; do echo "$a"; done`")"
            echo "$find_purified"
        done
    }
    
    # Ausgabefunktion: schreibt die Ausgabe nach /tmp/myolddirs.txt
    function print_dirs () {
        find_dirs | while read a; do
            tree -D "$a"
            echo -e "\n\n\n"
        done > /tmp/myolddirs.txt
    }
    
    # Funktion aufrufen
    printdirs
    Aufruf: skript.sh 365 <-- das Alter der zu suchen Verzeichnisse
    Geändert von drunkenPenguin (30.03.06 um 15:49 Uhr)

Ähnliche Themen

  1. transcode bricht einfach ab
    Von klaus_harrer im Forum Fernsehen
    Antworten: 1
    Letzter Beitrag: 24.11.03, 21:23
  2. Half-Life Update Problem
    Von weedos im Forum Emulatoren für Spiele
    Antworten: 1
    Letzter Beitrag: 31.10.03, 09:34
  3. Seltsames Problem mit XFree86 4.0.1
    Von niggo im Forum X-Konfiguration
    Antworten: 4
    Letzter Beitrag: 22.01.02, 21:59
  4. Problem mit SuSE Linux 7.3 Pro und SuSEfirewall2
    Von outi im Forum Linux als Server
    Antworten: 1
    Letzter Beitrag: 15.12.01, 17:52
  5. Antworten: 21
    Letzter Beitrag: 17.06.01, 18:06

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •