Listen Sie Dateien in bestimmten Verzeichnissen auf, die älter als 1 Tag oder 24 Stunden sind

2

Ich versuche, ein einfaches Sicherungsskript in Python zu schreiben, in dem ich versuche, die 24 Stunden alten Dateien in bestimmten Verzeichnissen aufzulisten, die ich auswählen würde.

Ich habe das Handbuch von find gelesen und benutzt

finden . -mtime 1> log.dat

Um die Liste der Dateien in der log.dat zu erhalten, erhalte ich jedoch auch die Pfadinformationen in dieser Liste als solche

./hpc06MatlabCodes/2011/Apr/3dBoxModel
./hpc06MatlabCodes/2011/Apr/3dBoxModel/vfluidIrca10.dat ./hpc06MatlabCodes/2011/Apr/3dBoxModel/vLRecoveredSystem.mat

Gibt es eine Möglichkeit, die Verzeichnisse auszuschließen und nur die Dateiliste abzurufen? Grüße, Umut

Umut Tabak
quelle

Antworten:

1

Füge die '-type f' Flagge hinzu, um folgendes zu finden:

$ find . -type f -a -mtime 1 > log.dat

(das -aist 'und' - es ist die Standard-Konjunktion, aber ich möchte es angeben, falls sich die Standardeinstellung irgendwann in der Zukunft ändert.)

Majenko
quelle
1

Da Sie dies tun, ist Python, würde ich verwenden:

def get_old_files(topdir, howold=24*3600):
    import os, time
    now = time.time()
    filelist = []
    def traverse_links(filename):
        if not os.path.islink(filename):
            return filename
        return traverse_links(os.path.normpath(
                    os.path.join(os.path.dirname(filename), os.readlink(filename)))))
    for dirpath, dirnames, filenames in os.walk(topdir):
        for name in [traverse_links(os.path.join(dirpath, f)) for f in filenames]:
            try:
                if os.path.isfile(name) and now - os.path.getmtime(name) > howold:
                    filelist.append(name)
            except OSError:
                pass # ignore bad symlinks
    return filelist

Dies sollte tun, was Sie möchten. Sie können auch ein optionales Argument hinzufügen, das die Verzeichnisse einschränkt. Der Vorteil dieses Overcalls findist der zusätzliche Aufwand, der mit dem Starten eines neuen Prozesses verbunden ist, anstatt alles innerhalb des Prozesses zu erledigen.

Arcege
quelle
Danke für das Drehbuch
Umut Tabak