Я пытаюсь записать простое обратно сценарий в Python, где я пытаюсь перечислить файлы, которые составляют 24 часа, старые в определенных каталогах, которые я выбрал бы.
Я прочитал руководство находки и использовал
найти.-mtime 1> log.dat
для получения списка файлов в log.dat однако, я также получаю информацию пути в том списке как таковом
./hpc06MatlabCodes/2011/Apr/3dBoxModel
./hpc06MatlabCodes/2011/Apr/3dBoxModel/vfluidIrca10.dat./hpc06MatlabCodes/2011/Apr/3dBoxModel/vLRecoveredSystem.mat
есть ли способ исключить каталоги и только получить список файлов. Greetz, Umut
Так как Вы делаете, это - Python, я использовал бы:
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
Это должно сделать то, чего Вы желаете, Вы могли также добавить дополнительный аргумент, который сократит каталоги. Преимущество использования этого по вызову find
дополнительные издержки, связанные с порождением нового процесса в противоположность выполнению всего этого в процессе.