2

我正在尝试使用以下 shell 脚本打印所有文件的时间。但我发现并不总是字节 42 到 46 是时间,因为它会因用户名和其他详细信息中更多/更少的字节而改变。还有其他方法可以获取时间吗?

#!/bin/sh
for file in `ls `
do
    #echo `ls -l $file`
    echo `ls -l $file | cut -b 42-46`
done
4

2 回答 2

5

使用 awk。

尝试ls -l | awk '{ print $6 $7 $8}'

这将打印 ls -l 的第 6、第 7 和第 8 个字段,由空格分隔

如果字段不同,您可以更改数字以调整哪些字段。

于 2012-09-05T03:55:05.727 回答
2

的输出ls取决于文件的年龄。对于小于约 6 个月的文件,它是月、日、时间(以小时和分钟为单位);对于 6 个月以上的文件,它会打印月、日、年。

stat命令可用于获取更准确的时间。

例如,要打印某些文本文件的最后修改时间和文件名,请尝试:

stat -c '%y %n' *.txt

从手册:

   %x     Time of last access
   %X     Time of last access as seconds since Epoch
   %y     Time of last modification
   %Y     Time of last modification as seconds since Epoch
   %z     Time of last change
   %Z     Time of last change as seconds since Epoch

人统计

于 2012-09-05T04:39:27.717 回答