Получите последнее время изменения каталога рекурсивно

Как я могу получить последний раз, когда какой-либо из файлов в каталоге или его подкаталоги изменился? например

Dir - changed 1/1/1 Sub Dir 1 - changed 2/1/1 Sub Dir 2 - changed 3/1/1 File 1 - changed 10/1/1 File 2 - change 5/1/1 

Результат для этого для Dir должен быть 10/1/1 ( File 1 был последним измененным). Получение последнего имени файла, которое нужно изменить, является бонусом, но это необязательно.

find <dir> -type f -printf '%[email protected]\t%p\n' | sort -r -k1 | head -n1 find <dir> -type f -printf '%[email protected]\t%p\n' | sort -r -k1 | head -n1 возвращает строку в форме:

 <seconds since epoch[1]><tab><filename> 

Выполните псевдоним или введите сценарий, как в следующем примере, для печати имени файла или даты.


Давайте создадим дерево тестирования:

 $ date -u; mkdir -pa/{b,c,d}/{e,f,g} Sat May 28 17:37:52 UTC 2011 $ date -u; touch a/{b,c,d}/{e,f,g}/{foo,bar,baz}; sleep 1; date -u; touch a/c/f/bar Sat May 28 17:38:17 UTC 2011 Sat May 28 17:38:18 UTC 2011 

Дата a :

 $ date -ud @$(find a -type f -printf '%[email protected]\t%p\n' | sort -r -k1 | head -n1 | cut -f1) Sat May 28 17:38:18 UTC 2011 

Получить путь к файлу:

 $ find a -type f -printf '%[email protected]\t%p\n' | sort -r -k1 | head -n1 | cut -f2 a/c/f/bar 

[1]: см. Unix время в Википедии для объяснения «эпохи Unix».


Пример сценария:

 #!/bin/sh if test ! -d "${1:-.}" then echo not a directory: ${1:-.} >&2 exit 1 fi date -d @$(find "${1:-.}" -type f -printf '%[email protected]\t%p\n' | sort -r -k1 | head -n1 | cut -f1) 

Вызовите с аргументом <dir> или без него. Он будет использовать текущий каталог без него.

Я использую FAR Manager, чтобы сделать что-то подобное этому, которое должно решить вашу проблему:

FAR Manager (бесплатный и открытый исходный код)
http://www.farmanager.com/

Вот как я это делаю:

  • Перейдите в каталог, в который я хочу начать поиск.
  • Нажмите Alt-F7 (чтобы открыть диалог поиска)
  • Искать *.* (Все файлы)
  • После завершения поиска выберите «Панель»
  • Нажмите F9, затем L, затем L, чтобы отобразить полные данные о листинге файла.
  • Нажмите CTRL-F5, чтобы отсортировать все по метке времени модификации

«Панель» помещает все результаты поиска в один длинный отсортированный список. У вас также есть другие параметры сортировки (удерживание клавиши CTRL откроет их вам в нижней части экрана), и повторное нажатие той же комбинации клавиш сортировки приведет к тому, что сортировка будет работать в противоположном направлении (вы можете продолжать переключение между восходящим и нисходящим сюда).

Хотя сам каталог не может иметь самую новую временную метку, по крайней мере, вы сможете найти последний файл таким образом, а затем вы увидите полный путь в списке. Надеюсь, это поможет вам получить необходимую информацию?

Введите описание изображения здесь

В DOS эта команда может работать для вас, хотя и не совсем из-за присущих им ограничений с помощью DIR-команды DOS:

  • DIR / A / OD / S / TW

Переключатель / TW является наиболее интересным для вас, потому что это означает «показать последний написанный до настоящего времени» (который находится как можно ближе к «DIR /?» До даты последнего изменения).

Переключатель / OD вызывает сортировку данных по дате. Команда DIR должна понять, что вы используете переключатель / TW и сортируете по этой дате автоматически.

Переключатель / S позволяет рекурсивно искать в подкаталогах.

Коммутатор / A включает в себя все типы файлов, включая скрытые файлы. Если вы не хотите включать Hidden [и другие подобные] файлы, оставьте этот переключатель.

  • В чем разница между перенаправлением 2> & 1 1> file.txt и> a.txt 2> & 1?
  • Linux gnu screen - запускать команды сразу после запуска экрана?
  • Получение макросов из Razer BlackWidow для работы с Linux
  • Как закрыть все фоновые процессы в unix?
  • Как разбить большой файл flac int и заполнить тег id3?
  • Ip против ifconfig
  • Как настроить громкость звука каждый раз, когда я нажимаю клавиши изменения громкости?
  • Поведение rsync с файлом, который все еще записывается?
  • Изменить каталог вверх до указанной цели
  • Могу ли я украсть сеанс vim с другого терминала?
  • Разрешение sudo запрещено
  • Давайте будем гением компьютера.