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

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

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 был последним измененным). Получение последнего имени файла, которое нужно изменить, является бонусом, но это необязательно.

3 Solutions collect form web for “Получите последнее время изменения каталога рекурсивно”

find <dir> -type f -printf '%T@\t%p\n' | sort -r -k1 | head -n1 find <dir> -type f -printf '%T@\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 '%T@\t%p\n' | sort -r -k1 | head -n1 | cut -f1) Sat May 28 17:38:18 UTC 2011 

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

 $ find a -type f -printf '%T@\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 '%T@\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 [и другие подобные] файлы, оставьте этот переключатель.

  • Ubuntu Netbook Remix на USB?
  • Как проверить, что TRIM активирован? (Linux)
  • Отменить команду «rm -rf ~»?
  • Если кто-то скачал 600 ГБ, это может быть атака DOS
  • Установить внешний вид PuTTY в Windows
  • Ubuntu 14.04 обнаружено проводное соединение, но нет доступа в Интернет
  • Ssh-agent и экран
  • Не удается получить доступ к избранным веб-сайтам в Linux (но может быть в Windows)
  • Как скопировать файл без использования scp внутри сеанса ssh?
  • Связывание Super + C Super + V для копирования и вставки
  • Есть ли быстрый / автоматический способ изменения яркости монитора ночью в Windows 7 или Linux?
  • Interesting Posts

    «Новая папка» Ярлык клавиатуры в окнах xp sp3?

    Где я могу найти журналы при недавней вставке USB в средство просмотра событий?

    Понимание, когда data.table является ссылкой на (по сравнению с копией) другой data.table

    Обход ограничения размера файла FAT32 4 ГБ

    Подозрительный MBR в секторе 0, есть ли способ его исправить?

    Android – Как сделать скриншот программным

    Command-A не выделяет текст в нескольких текстовых полях для Mac OS X

    Не удалось выполнить com.google.android.gms play-services-auth: 11.4.0

    Как узнать точную строку кода, где было вызвано исключение?

    jquery loop on Json data с использованием $ .each

    Измените ключ продукта Windows 8 после установки?

    SQLException: не найдено подходящего драйвера

    Что такое ограничение размера кеша по умолчанию для Chrome?

    Как вызвать .ajaxStart () для определенных вызовов ajax

    PANIC: Разбитый путь системы AVD. Проверьте значение ANDROID_SDK_ROOT

    Давайте будем гением компьютера.