С помощью find
команды я могу отображать имена каталогов на нескольких уровнях. Следующая команда отображает все каталоги по /var
пути с глубиной 2:
find /var -maxdepth 2 -type d;
Результат показывает:
/var
/var/log
/var/log/sssd
/var/log/samba
/var/log/audit
/var/log/ConsoleKit
/var/log/gdm
/var/log/sa
С помощью stat
команды я могу найти измененную дату и время:
stat /var/log/samba | grep 'Modify:'
Результат:
Modify: 2014-01-02 11:21:27.762346214 -0800
Есть ли способ объединить две команды, чтобы каталоги отображались с измененной датой и временем?
-printf
Вариант ниже Избегает заходящихstat
для каждого найденного файла. В моем тесте команда дает почти идентичный результат, только с дополнительной точностью до секунд.stat
--f
.find /var -maxdepth 2 -type d -exec stat -f "%t%Sm %N" {} \;
Принятый ответ работает, но медленно. Нет необходимости запускать статистику для каждого каталога, find предоставляет дату изменения, и вы можете просто распечатать ее напрямую. Вот эквивалентная команда, которая значительно быстрее:
источник
find
msys, работающим в Windows, в котором отсутствуетstat
команда.%Tc
печатает «дату и время локали», разрешая строку формата «% p% Tc»find /var -maxdepth 2 -type d | xargs ls -oAHd
Это способ заставить вашу базовую
ls
команду отображать полный путь к каталогу. Хотяls
есть-R
параметр для рекурсивного поиска, дорожки не будут отображаться в результатах поиска с-l
или-o
вариантом (в OSX, по крайней мере), напр с:ls -lR
.источник
find /var -maxdepth 2 -type d -ls
проще простого.Последние версии GNU
find
также включают-printf
опцию, которая включает поля даты. Если вам нужно напечатать имя файла и время модификации в стандартном формате «C», вы можете использовать-printf "%c %p\n"
.Если вам нужна дата в определенном формате, вы можете использовать
%C
символ, за которым следует поле. Например, год будет 4-значным%CY
, сY
символом для 4-значного года.Обратите внимание: если вам нужно несколько полей, вам нужно будет указать их
%C
несколько раз. Например, формат ГГГГ-ММ-ДД будет выглядеть так%CY-%Cm-%Cd
.Дополнительные сведения см. На страницах руководства или в интерактивной документации .
Вот рабочий пример:
источник
Еще один, который я использую для печати измененных файлов за последний день. ls -ltr дает мне более подробную информацию, например, время модификации, пользователя и т. д.
источник
-name '*.ext'
спецификацию.ls -lt
Sorts по времени модификации.)-print0
вместо,-print
а затем использоватьxargs -0
вместоxargs
.xargs
может вызывать команду (ls
здесь) несколько раз, в зависимости от количества параметров, чтобы предотвратить вызов команды с чрезмерным количеством параметров. Следовательно, сортировка (независимо от критерия, в том числе по дате) может дать «неправильный» результат (=> список отсортированных подмножеств вместо отсортированного полного набора).попробуйте эту строку:
вот я его запустил, он выводит:
источник