Список всех недавно измененных файлов (рекурсивный)

Итак, я хочу отобразить (например, через ls) все файлы, которые были изменены за последние семь дней.

Например:

File        Last changed
docroot
|- myfile1  30.11.2015
|- myfile2  10.11.2015
|- MySub
   |-sub1   30.11.2015
   |-sub2   10.11.2015

Итак, ls (или что-то другое подходит) ) должен выводить myfile1 и (если возможно) MySub/sub1.

Возможно ли это с одной командой?

1
задан 30 November 2015 в 13:25

4 ответа

С zsh:

ls -l **/*(.m-7)
**/* будет искать файлы, рекурсивно начинающиеся с текущего каталога (.m-7), является квалификатором glob, где . указывает обычный файл, m-7 указывает файлы, которые были изменены за последние 7 дней
4
ответ дан 23 May 2018 в 15:23

Не совсем то, о чем просили ... но гораздо легче запомнить ...

ls -alRt docroot

или

ls -alRt /path/to/top/level/directory
1
ответ дан 23 May 2018 в 15:23

7 дней, что составляет 60 секунд * 60 минут * 24 часа * 7 дней = 604800 секунд

Узнать текущую дату в секундах (время эпохи Unix):

$ date +%s
1448876323

Вычесть 7 дней в секундах:

expr $(date +%s) - 604800
1448271548

Теперь возьмите команду stat и распечатайте статистику для всех файлов в формате «имя + время в секундах» и используйте awk, чтобы обрезать те файлы, время модификации которых больше, чем что мы рассчитали

$ stat --printf="%n %Y\n" $HOME/* | awk '$2 > 1448271265 {print $0}'
/home/xieerqi/1448428697574.png 1448429613
/home/xieerqi/1448763343273.png 1448763478
/home/xieerqi/1510DRIVE 1448352453
/home/xieerqi/addRemoveDistribution 1448666843
/home/xieerqi/add-update.awk 1448716356
/home/xieerqi/add-update.sh 1448625092

. Особенно интересны последние 3 файла, потому что я знаю, что я работал над ними меньше, чем 7 дней назад. Таким образом, я знаю, что это работает

0
ответ дан 23 May 2018 в 15:23
  • 1
    Обратите внимание, что вместо awk '$2 > 1448271265 {print $0}' вы можете прямо сказать awk '$2 > 1448271265'. В истинном состоянии awk печатает текущую строку как действие по умолчанию. – fedorqui 30 November 2015 в 20:09

Следующая команда работает сон на Mac OSX - возможно, также на ubuntu ...

find . -type f -mtime -7 -exec stat -lt "%Y-%m-%d %H:%M:%S" {} \; | cut -d\  -f6- | sort -r

Это находит файлы в текущем дереве каталогов, которые были изменены за последние 7 дней, выдает дату изменения + время и путь, отсортированные в первую очередь.

Пример вывода:

2018-02-21 22:06:30 ./fmxmlsnippet.xml
2018-02-19 12:56:01 ./diff.html
2018-02-19 12:44:37 ./temp/iDDR/XMSC_fmxmlsnippet.xml
2018-02-18 22:04:05 ./temp/iDDR/XMFD_fmxmlsnippet.xml
2018-02-15 10:18:27 ./xml/iDDR/XML2_fmxmlsnippet.xml
2018-02-15 10:13:29 ./xsl/fmxmlsnippet/XML2_fmCM_AnalyseLayout.xsl
2018-02-15 10:11:36 ./xsl/.DS_Store
2018-02-15 10:10:51 ./xsl/_inc/inc.XML2_fmCM_ReportReferencesToExternalFiles.xsl
2018-02-15 10:10:09 ./xsl/_inc/.DS_Store
2018-02-15 10:07:35 ./xsl/fmxmlsnippet/XML2_fmCM_AnalyseLayout-NoAnchors.xsl
2018-02-15 10:07:35 ./xsl/_inc/inc.XML2_fmCM_AnalyseLayout.xsl

Я был бы благодарен за любые отзывы пользователей ubuntu.

0
ответ дан 23 May 2018 в 15:23

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

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