find -mtime返回错误的列表

时间:2013-06-28 16:28:45

标签: linux

当我运行此命令时:

root:/home/mws 0$ ls -lrt `find /home/data/ll_misc_logs/ -mtime +20`

并且没有符合mtime设置的文件,20天,它列出了当前目录的内容,/ home / mws 为什么? 有没有办法只返回任何内容或消息?

2 个答案:

答案 0 :(得分:3)

当没有文件符合mtime设置时,find ....的输出会扩展为...... nothing。在这种情况下,您的命令变为ls -lrt,它将始终列出当前目录。

如果典型运行中没有太多文件,这可能会更好:

find /home/data/ll_misc_logs -mtime +20 -print0 | xargs -0 -r ls -ltr

但是,如果你得到的文件很多,xargs决定将它分成多个调用,那么它可能也不会完全符合你的要求。

这导致我......你究竟想做什么?从表面上看,它看起来像“通过修改时间按顺序显示旧文件”,但它可能是一个更大的东西的一部分,可能以更有效(并且不易出错)的方式解决......

答案 1 :(得分:0)

如果您只想要一个超过20天的文件列表,请按最早的文件排序:

find /home/data/ll_misc_logs -mtime +20 -exec ls -l --time-style=%s {} \; | sort -n -k 6