使用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
有没有办法合并这两个命令,以便列出目录的修改日期时间?
答案 0 :(得分:101)
接受的答案有效,但速度很慢。没有必要为每个目录执行stat,find提供修改日期,您可以直接打印出来。这是一个相当快的命令:
find /var -maxdepth 2 -type d -printf "%p %TY-%Tm-%Td %TH:%TM:%TS %Tz\n"
答案 1 :(得分:52)
您可以使用-exec
的{{1}}开关,并使用find
开关定义stat
的输出格式,如下所示:
-c
这应该在输出的同一行给出文件名后跟修改时间。
答案 2 :(得分:13)
find /var -maxdepth 2 -type d | xargs ls -oAHd
这是一种让您的基本ls
命令显示完整目录路径的方法。虽然ls
具有递归搜索的-R
参数,但路径不会显示在-l
或-o
选项的结果中(至少在OSX中),前者:ls -lR
。
答案 3 :(得分:4)
我用于在去年打印修改过的文件的另一个。 ls -ltr给了我更详细的修改时间,用户等
find <my_dir> -mtime -1 -type f -print | xargs ls -ltr
答案 4 :(得分:3)
Head
的最新GNU版本还包括一个find
选项,其中包括日期字段。如果您需要以标准的“ C”格式打印文件名和修改时间,则可以使用-printf
。
如果希望日期采用特定格式,则可以使用-printf "%c %p\n"
,后跟一个字段字符。例如,四位数的年份将是%C
,而%CY
是四位数的年份的字符。
请注意,如果您需要多个字段,则需要多次指定Y
。例如,YYYY-MM-DD格式看起来像%C
。
检查手册页或online documentation了解更多详细信息。
这是一个有效的示例:
%CY-%Cm-%Cd
答案 5 :(得分:1)
试试这一行:
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
....