2 votes

lister les fichiers dans des répertoires spécifiques plus anciens que 1 jour ou 24 heures

J'essaie d'écrire une simple sauvegarde script en Python où j'essaie de lister les fichiers qui ont 24 heures dans des répertoires spécifiques que je choisirais.

J'ai lu le manuel de recherche et utilisé

trouver . -mtime 1 > log.dat

pour obtenir la liste des fichiers dans le fichier log.dat, mais j'obtiens également les informations sur le chemin d'accès dans cette liste comme suit

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

Existe-t-il un moyen d'exclure les répertoires et de n'obtenir que la liste des fichiers ? Salutations, Umut

1voto

Majenko Points 31077

Ajoutez l'option '-type f' à find :

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

(le -a est 'et' - c'est la conjonction par défaut mais j'aime bien la spécifier au cas où la conjonction par défaut changerait à un moment donné dans le futur).

1voto

Arcege Points 2033

Puisque vous faites cela en Python, j'utiliserais :

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

Cela devrait faire ce que vous souhaitez, vous pourriez également ajouter un argument optionnel qui limitera les répertoires. L'avantage d'utiliser cette méthode plutôt que d'appeler find est la surcharge supplémentaire impliquée par la création d'un nouveau processus plutôt que de tout faire à l'intérieur du processus.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X