要获取文件的完整时间戳,我可以这样做:
$ ls -lT
但是,当我尝试以下操作时:
find . -ls -lT
我得到一个find: -lt: unknown primary or operator
(使用find . -ls
作品)。
find
使用+ls -lT
命令的正确方法是什么?
find "-ls" 选项没有运行 ls 并且不接受它的所有参数。也就是说,我不知道你为什么想要 -T 参数,这是一个涉及制表位的晦涩难懂的东西,我必须查找它。但从广义上讲,您只想对 find 找到的一堆文件运行一个命令(在本例中为“ls -lT”)。因此,以下任何一项都应该起作用:find . -type f | xargs -n1 ls -lT
orfind . -type f -exec ls -lT {} ';'
或for i in $(find . -type f); do ls -lT $i; done
.
或者,对于需要多个命令行参数的 ls 的特殊情况,只需find . -type f | xargs ls -lT
如果您正在解析 的输出ls
,那么您做错了。与文件系统交互总是有比解析人类可读的输出更好的方法。
我不确定您所说的“文件的完整时间戳”是什么意思,但是如果您想要最后一次修改时间,请使用stat
.
stat --printf='%x' foo
2013-01-29 13:33:32.000000000 -0600
运行man stat
以查看--printf
参数中的所有其他格式选项。