如何使用'find'命令显示修改的date时间?
使用find
命令,我可以显示具有多个级别的目录名称。 以下命令显示深度为2的/var
path下的所有目录:
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
命令,我可以find修改的date时间:
stat /var/log/samba | grep 'Modify:'
结果是:
Modify: 2014-01-02 11:21:27.762346214 -0800
有没有办法把这两个命令结合起来,这样目录就会被修改date时间?
您可以使用-exec
开关find
并使用-c
开关定义stat
的输出格式,如下所示:
find /var -maxdepth 2 -type d -exec stat -c "%n %y" {} \;
这应该在输出的同一行上给出文件名后面的修改时间。
被接受的答案有效,但速度很慢。 没有必要为每个目录执行统计,find提供修改date,你可以直接打印出来。 这是一个相当快的等价命令:
find /var -maxdepth 2 -type d -printf "%p %TY-%Tm-%Td %TH:%TM:%TS %Tz\n"
find /var -maxdepth 2 -type d | xargs ls -oAHd
这是获取基本ls
命令以显示完整目录path的一种方法。 虽然ls
具有recursionsearch的-R
参数,但path将不会显示在带-l
或-o
选项(至less在OSX中)的结果中,ex则使用: ls -lR
。
试试这一行:
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 ....
另一个我用来在最后一天打印修改后的文件。 ls -ltr给我更详细的修改时间,用户等等
find <my_dir> -mtime -1 -type f -print | xargs ls -ltr