如何在Bash中使用find命令查看文件日期

6

我在bash中使用find命令查找某些类型的文件。一切都很顺利,除非显示给我的结果只包含文件名而不是文件的(最后修改)日期。我尝试将其管道传输到ls或ls -ltr,但结果中并没有显示文件日期列,我也尝试了以下方法:

ls -ltr | find . -ctime 1

但实际上我没有工作。您能指导我如何查看由find命令返回的文件的文件日期吗?

3个回答

11

对于这个问题,你需要使用xargs或者-exec

find . -ctime 1 -exec ls -l {} \;

find . -ctime 1 | xargs ls -l

(第一个命令会逐个对每个找到的文件执行ls,而第二个命令会将它们分批进行大规模的ls操作,从而可以稍微更好地格式化。)


谢谢。这是完全正确的。 - Farshid
1
@Farshid:-mtime 是修改时间。 - Dennis Williamson

8
如果您只想显示类似于ls的输出,可以使用find命令的-ls选项:
$ find . -name resolv.conf -ls
1048592    8 -rw-r--r--   1 root     root          126 Dec  9 10:12 ./resolv.conf

如果你只想要时间戳,你需要查看-printf选项。
$ find . -name resolv.conf -printf "%a\n"
Mon May 21 09:15:24 2012

要按日期排序,请在末尾添加“| sort -n”。详情请见:https://superuser.com/a/546900/299967(仍可在十年后使用) - wistlo

2
find . -ctime 1 -printf '%t\t%p\n'

打印日期时间和文件路径,用一个␉字符分隔。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接