我正在尝试使用以下 shell 脚本打印所有文件的时间。但我发现并不总是字节 42 到 46 是时间,因为它会因用户名和其他详细信息中更多/更少的字节而改变。还有其他方法可以获取时间吗?
#!/bin/sh
for file in `ls `
do
#echo `ls -l $file`
echo `ls -l $file | cut -b 42-46`
done
使用 awk。
尝试ls -l | awk '{ print $6 $7 $8}'
这将打印 ls -l 的第 6、第 7 和第 8 个字段,由空格分隔
如果字段不同,您可以更改数字以调整哪些字段。
的输出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