Подтвердить что ты не робот

Как отобразить измененное время с помощью команды "Найти"?

С помощью команды 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 

Есть ли способ объединить две команды, чтобы каталоги были перечислены с измененным временем даты?

4b9b3361

Ответ 1

Вы можете использовать переключатель -exec для find и определить выходной формат stat с помощью переключателя -c следующим образом:

find /var -maxdepth 2 -type d -exec stat -c "%n %y" {} \;

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

Ответ 2

Принятый ответ работает, но он медленный. Там нет необходимости в exec stat для каждого каталога, find предоставляет дату изменения, и вы можете просто распечатать его напрямую. Здесь эквивалентная команда значительно быстрее:

 find /var -maxdepth 2 -type d -printf "%p %TY-%Tm-%Td %TH:%TM:%TS %Tz\n"

Ответ 3

find /var -maxdepth 2 -type d | xargs ls -oAHd

Это способ заставить вашу базовую команду ls отобразить полный путь к каталогу. В то время как ls имеет параметр -R для рекурсивного поиска, пути не будут отображаться в результатах с опцией -l или -o (по крайней мере, в OSX), для ex с: ls -lR.

Ответ 4

попробуйте эту строку:

find /var -maxdepth 2 -type d|xargs stat|grep -E 'File|Modi'

здесь я запустил его, он выводит:

....
  File: ‘/var/cache/cups’
Modify: 2013-12-24 00:42:59.808906421 +0100
  File: ‘/var/log’
Modify: 2014-01-01 12:41:50.622172106 +0100
  File: ‘/var/log/old’
Modify: 2013-05-31 20:40:23.000000000 +0200
  File: ‘/var/log/journal’
Modify: 2013-12-15 18:56:58.319351603 +0100
  File: ‘/var/log/speech-dispatcher’
Modify: 2013-10-27 01:00:08.000000000 +0200
  File: ‘/var/log/cups’
Modify: 2013-12-22 00:49:52.888346088 +0100
  File: ‘/var/opt’
Modify: 2013-05-31 20:40:23.000000000 +0200
....

Ответ 5

Другой, который я использую для печати измененных файлов в последний день. ls -ltr дает мне более подробное время модификации, пользователь и т.д.

find <my_dir> -mtime -1 -type f -print | xargs ls -ltr