如何用'find'命令显示修改日期时间?

Pur*_*res 69 linux command-line grep find stat

使用find命令,我可以显示多个级别的目录名称.以下命令显示/var深度为2的路径下的所有目录:

find /var -maxdepth 2 -type d;
Run Code Online (Sandbox Code Playgroud)

结果显示:

/var
/var/log
/var/log/sssd
/var/log/samba
/var/log/audit
/var/log/ConsoleKit
/var/log/gdm
/var/log/sa
Run Code Online (Sandbox Code Playgroud)

使用stat命令,我可以找到修改的日期时间:

stat /var/log/samba | grep 'Modify:'
Run Code Online (Sandbox Code Playgroud)

结果是:

Modify: 2014-01-02 11:21:27.762346214 -0800 
Run Code Online (Sandbox Code Playgroud)

有没有办法组合这两个命令,以便列出目录与修改日期时间?

kza*_*zar 109

接受的答案有效,但速度很慢.没有必要为每个目录执行stat,find提供修改日期,您可以直接打印出来.这是一个相当快的命令:

 find /var -maxdepth 2 -type d -printf "%p %TY-%Tm-%Td %TH:%TM:%TS %Tz\n"
Run Code Online (Sandbox Code Playgroud)

  • 在mac上,'brew install findutils'然后gfind有-printf选项. (5认同)
  • 一个更好的解决方案.它也适用于在Windows上运行的msys的`find`,它缺少`stat`命令. (4认同)
  • `%Tc` 打印“区域设置的日期和时间”,允许格式字符串“%p %Tc” (2认同)
  • 有关 % 格式化程序解释的更多有用链接。https://unix.stackexchange.com/a/215236/216480 或在[手册页](http://man7.org/linux/man-pages/man1/find.1.html) 上搜索“-printf格式” (2认同)

rc0*_*c0r 55

您可以使用-exec的开关find和定义的输出格式stat使用-c如下开关:

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

这应该在输出的同一行给出文件名后跟修改时间.

  • 对于 MacOS,“stat”的格式参数字符是“-f”。`find /var -maxdepth 2 -type d -exec stat -f "%t%Sm %N" {} \;` (5认同)

Mar*_*ark 13

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

这是一种获取基本ls命令以显示完整目录路径的方法.虽然ls具有-R递归搜索的参数,但使用-lor -o选项(至少在OSX中)不会在结果中显示路径,例如:ls -lR.

  • 你可以通过`find/var -maxdepth 2 -type d -ls`来实现这个,它更简单. (3认同)

use*_*666 6

最后一天,我用它来打印修改过的文件。ls -ltr给我更详细的信息,例如修改时间,用户等

find <my_dir> -mtime -1 -type f -print | xargs ls -ltr 
Run Code Online (Sandbox Code Playgroud)

  • 当文件名包含空格时,这不起作用。更好的是使用`-print0`代替`-print`,然后使用`xargs -0`代替`xargs`。 (2认同)

Mr.*_*ama 5

最新的GNU版本find还包括一个-printf包含日期字段的选项。如果您需要以标准的“ C”格式打印文件名和修改时间,则可以使用-printf "%c %p\n"

如果您希望日期采用特定格式,则可以使用,%C后跟一个字段字符。例如,4位数字的年份为%CY,其中Y4位数字的年份为字符。
请注意,如果您需要多个字段,则需要指定%C多次。例如,YYYY-MM-DD格式如下所示%CY-%Cm-%Cd

检查手册页或在线文档以获取更多详细信息。

这是一个工作示例:

find . -name favicon.ico -printf "%c %p\n"
Run Code Online (Sandbox Code Playgroud)