在复合命令中找到+ ls -lT

时间:2013-01-29 20:03:00

标签: linux bash shell unix find

要获取文件的完整时间戳,我可以这样做:

$ ls -lT

然而,当我尝试以下内容时:

find . -ls -lT

我得到find: -lt: unknown primary or operator(使用find . -ls作品)。

使用find + ls -lT命令的正确方法是什么?

2 个答案:

答案 0 :(得分:4)

find“-ls”选项不运行ls并且不接受其所有参数。也就是说,我不知道为什么你想要-T参数,这是一个涉及制表位的模糊不清的东西,我必须查找。但是从广义上讲,你只想在find找到的一堆文件上运行命令(在本例中为“ls -lT”)。因此,以下任何一项都可以有效:find . -type f | xargs -n1 ls -lTfind . -type f -exec ls -lT {} ';'for i in $(find . -type f); do ls -lT $i; done

或者,对于需要多个命令行参数的ls的特殊情况,只需find . -type f | xargs ls -lT

答案 1 :(得分:3)

如果您正在解析ls的输出,那么您做错了。与解析人类可读的输出相比,总是有更好的方法来与文件系统进行交互。

我不确定“文件的完整时间戳”是什么意思,但如果你想要,比如上次修改时间,请使用stat

stat --printf='%x' foo 
2013-01-29 13:33:32.000000000 -0600

运行man stat以查看--printf参数中的所有其他格式设置选项。