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