使用 find 和 stat 显示文件名和统计信息

使用 find 和 stat 显示文件名和统计信息

我正在尝试运行一个命令来查找所有以“geo”开头的文件并查看它们的编辑时间。我正在尝试跟踪,但不幸的是没有运气。

stat 是否有一个参数来显示文件名或者我需要一个多行 bash 脚本......

这有效:

find . -name 'geo*' -exec stat -c%y {} \;

这不:

# find . -name 'geo*' -exec echo {}&&stat -c%y {} \;
find: missing argument to `-exec'

答案1

使用:

find . -name 'geo*' -exec stat -c%n\ %y {} \;

使用stat --help以获取更多信息

答案2

您可以%n在 stat 中使用它作为文件名

find . -name 'geo*' -exec stat -c '%y       %n' {} \;

或者,你可以将文件修改时间打印为%Tk(其中k是日期时间说明符,类似于“C”时间字符串函数)和名称%p直接从 find 命令中获取,例如

find . -name 'geo*' -printf '%Tc %p\n' 

或者更接近于stat -y

find . -name 'geo*' -printf '%TY-%Tm-%Td %TT %Tz    %p\n'

答案3

它不起作用,因为您附加到命令的 &&:

execve("/usr/bin/find", ["find", ".", "-name", "geo*", "-exec", "echo", "{}"], [/* 56 vars */]) = 0
brk(0)                                  = 0x9914000

如你所见, 被&&壳吞噬,永远无法到达find。在这种情况下,你可以使用 PaulB 解决方案:

find . -name 'geo*' -exec stat -c%n%y {} \;
./.steam/ubuntu12_32/steam-runtime/i386/usr/share/X11/locale/georgian-academy2013-02-20 06:03:01.000000000 -0400
./.steam/ubuntu12_32/steam-runtime/i386/usr/share/X11/locale/georgian-ps2013-02-20 06:03:01.000000000 -0400
./.PlayOnLinux/fonts/georgiai.ttf2014-03-21 17:32:48.427937178 -0400

相关内容