Это может быть общий вопрос Linux, но я попробую здесь.
Мне нужен список недавно измененных файлов очень часто и в настоящее время для него. Я отправляю вывод ls на grep с параметром сегодня или на определенный час, но мне нужно изменить grep param, чтобы получить обновленный список, будучи немного непродуктивным.
Есть ли простая команда для перечисления последних измененных файлов по определенному пути?
В приведенном ниже сценарии перечислены все файлы рекурсивно внутри каталога, отредактированные короче, чем произвольное время. Кроме того, он отображает временной интервал со времени последнего редактирования.
Его можно использовать с командой:
findrecent <directory> <time(in hours)>
, как показано ниже:
В этом примере все файлы на мой рабочий стол, отредактированный менее 36 часов назад.
#!/usr/bin/env python3
import os
import time
import sys
directory = sys.argv[1]
try:
t = int(sys.argv[2])
except IndexError:
t = 1
currtime = time.time(); t = t*3600
def calc_time(minutes):
# create neatly displayed time
if minutes < 60:
return "[edited "+str(minutes)+" minutes ago]"
else:
hrs = int(minutes/60); minutes = int(minutes - hrs*60)
return "[edited "+str(hrs)+" hours and "+str(minutes)+" minutes ago]"
for root, dirs, files in os.walk(directory):
for file in files:
file = os.path.join(root, file); ftime = os.path.getctime(file)
edited = currtime - ftime
if edited < t:
print(file, calc_time(int(edited/60)))
Это так просто на самом деле. Чтобы получить последний файл в каталоге смородины:
ls -Art | tail -n 2
Чтобы получить последний файл в другом каталоге, например, в / opt / spark /:
ls /opt/spark/ -Art | tail -n 1
Это когда я использую его в своем кластере:
aa23916@picard03:/opt/spark/applicationHistory$ ls -Art | tail -n 2
app-20180124162809-0004
app-20180124163207-0005.inprogress
Простой и легкий:)