如何在 bash 中比较文件时间戳?

如何在 bash 中比较文件时间戳?

如何比较两个文件的时间戳?

我尝试了这个但是没有用:

file1time=`stat -c %Y fil1.txt`
file2time=`stat -c %Y file2.txt`
if[$file1time -gt $file2time];
then
 doSomething
fi

我按顺序打印了两个时间戳,它给了我

1273143480
1254144394
./script.sh: line 13: [1273143480: command not found

基本上如果我猜比较不起作用。或者如果除了我的方法之外还有其他更好的方法,请告诉我。我需要改变什么?

答案1

比较时间戳的运算符有:

[ $file1 -nt $file2 ]
[ $file1 -ot $file2 ]

助记符很简单:“比...更新”和“比...更旧”。

答案2

这是因为缺少一些空格。[是一个命令,所以它周围必须有空格, 是]一个特殊参数,用于告诉它命令行的结束位置。因此,您的测试行应如下所示:

if [ $file1time -gt $file2time ];

答案3

if并不是魔法。它会尝试运行传递给它的命令,并检查其退出状态是否为零。它也不能很好地处理不存在的参数,这就是为什么你应该用引号括住其中使用的变量。

if [ "$file1time" -gt "$file2time" ]

答案4

if ( [ $file1time -gt $file2time ] );
then
 doSomething
fi                                                                    

相关内容