在shell脚本中打印文件的时间

时间:2012-09-05 03:51:12

标签: shell unix

我正在尝试使用以下shell脚本打印所有文件的时间。但是我看到并不总是字节42到46是时间,因为它由于用户名和其他细节中的更多/更少字节而改变。还有另一种方式来获取时间吗?

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

2 个答案:

答案 0 :(得分:5)

使用awk。

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

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

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

答案 1 :(得分: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

man stat