0

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

$ ls -lT

但是,当我尝试以下操作时:

find . -ls -lT

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

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

4

2 回答 2

4

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

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

于 2013-01-29T20:10:41.800 回答
3

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

我不确定您所说的“文件的完整时间戳”是什么意思,但是如果您想要最后一次修改时间,请使用stat.

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

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

于 2013-01-29T21:43:06.100 回答