![使用 find 和 stat 显示文件名和统计信息](https://linux22.com/image/973076/%E4%BD%BF%E7%94%A8%20find%20%E5%92%8C%20stat%20%E6%98%BE%E7%A4%BA%E6%96%87%E4%BB%B6%E5%90%8D%E5%92%8C%E7%BB%9F%E8%AE%A1%E4%BF%A1%E6%81%AF.png)
我正在尝试运行一个命令来查找所有以“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