Как перечислить последние измененные файлы в определенном каталоге рекурсивно

Это может быть общий вопрос Linux, но я попробую здесь.

Мне нужен список недавно измененных файлов очень часто и в настоящее время для него. Я отправляю вывод ls на grep с параметром сегодня или на определенный час, но мне нужно изменить grep param, чтобы получить обновленный список, будучи немного непродуктивным.

Есть ли простая команда для перечисления последних измененных файлов по определенному пути?

1
задан 11 October 2015 в 22:37

2 ответа

В приведенном ниже сценарии перечислены все файлы рекурсивно внутри каталога, отредактированные короче, чем произвольное время. Кроме того, он отображает временной интервал со времени последнего редактирования.

Его можно использовать с командой:

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)))

Как использовать

Создать, если он еще не существует , каталог ~/bin Скопируйте сценарий выше в пустой файл, сохраните его как findrecent в ~/bin. Сделайте исполняемый файл скрипта. Выйдите из системы и вернитесь, и вы закончите

. Примечание [!d15 ] , если время не задано, сценарий отображает все файлы, отредактированные в последний час, если каталог содержит пробелы, используйте кавычки, как в примере

3
ответ дан 23 May 2018 в 16:46
  • 1
    Это действительно кажется излишним (изобретать колесо), когда уже существует множество инструментов, которые могут быть легко объединены вместе для этого. (Как описано heemayl.) – Wildcard 11 October 2015 в 21:15
  • 2
    @Wildcard Tools, из которых python один, или: инструменты, , используемые python, чтобы легко управлять ими. Сценарий был написан через минуту в гибкой и простой в использовании опции, позволяющей рекурсивно отображать недавно использованные файлы. Без сомнения, вопрос вкуса, продолжающаяся дискуссия, которую я боюсь. – Jacob Vlijm 11 October 2015 в 22:10

Это так просто на самом деле. Чтобы получить последний файл в каталоге смородины:

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

Простой и легкий:)

1
ответ дан 23 May 2018 в 16:46
  • 1
    Если вам нужно явно указать папку, она вряд ли кажется рекурсивной – sbergeron 24 January 2018 в 21:32

Другие вопросы по тегам:

Похожие вопросы: