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

new*_*own 20 linux bash comparison timestamp

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

我试过这个,但它不起作用:

file1time=`stat -c %Y fil1.txt`
file2time=`stat -c %Y file2.txt`
if[$file1time -gt $file2time];
then
 doSomething
fi
Run Code Online (Sandbox Code Playgroud)

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

1273143480
1254144394
./script.sh: line 13: [1273143480: command not found
Run Code Online (Sandbox Code Playgroud)

所以基本上如果比较不起作用,我想。或者如果有任何其他比我正在做的更好的方式,请告诉我。我需要改变什么?

Jon*_*ler 35

用于比较时间戳的运算符是:

[ $file1 -nt $file2 ]
[ $file1 -ot $file2 ]
Run Code Online (Sandbox Code Playgroud)

助记符很简单:“比”和“比”。


goe*_*son 6

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

if [ $file1time -gt $file2time ];
Run Code Online (Sandbox Code Playgroud)

  • `[` 是一个测试命令——请参阅 `bash` 手册页的“条件表达式”部分。`/usr/bin/test` 和 `/usr/bin/[` 中还有一个独立的可执行文件,但是如果您使用的是 bash 而不是使用完整路径,那么您使用的是内置的 shell。 (4认同)