如何在 bash 中验证 file2 是否比 file1 更新?

如何在 bash 中验证 file2 是否比 file1 更新?

我如何验证file2上次修改时间是在之后file1

在此示例中,perl的修改时间比 更近stack。是否有可以执行此操作的 bash 或 Linux 命令?比较根据修改时间检查这些文件?

-rw-r--r--    1 root     root         1577 Sep  7 22:55 stack
-rwxr-xr-x    1 root     root          626 Sep  7 23:10 perl

答案1

找到了这里

for f in /abcd/xyz* do
   [ "$f" -nt /abcd/test.txt ] && echo "file f$ found" done

答案2

if [[ FILE1 -nt FILE2 ]]; then
  echo FILE1 is newer than FILE2
fi

取自 '男人测试'.摘录:

FILE1 -nt FILE2
  FILE1 is newer (modification date) than FILE2

答案3

另一种方法是:

find -name file2 -newer file1

如果 file2 比 file1 更老或相同年龄,则返回 null。如果 file2 较新,则返回 file2 的名称(和目录)。

请注意,Linux 不会跟踪文件的创建时间。这些测试将针对最近的修改日期和时间。

答案4

如果你需要更详细的信息,你可以使用stat命令

<tbielawa>@(fridge)[~/SuperUser] 03:15:10
$ touch firstFile
<tbielawa>@(fridge)[~/SuperUser] 03:15:24
$ touch secondFile
<tbielawa>@(fridge)[~/SuperUser] 03:15:45
$ stat firstFile 
  File: `firstFile'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 805h/2053d  Inode: 151528      Links: 1
Access: (0644/-rw-r--r--)  Uid: (  500/tbielawa)   Gid: (  500/tbielawa)
Access: 2010-09-14 03:15:24.938721003 -0400
Modify: 2010-09-14 03:15:24.938721003 -0400
Change: 2010-09-14 03:15:24.938721003 -0400
<tbielawa>@(fridge)[~/SuperUser] 03:15:48
$ stat secondFile 
  File: `secondFile'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 805h/2053d  Inode: 151529      Links: 1
Access: (0644/-rw-r--r--)  Uid: (  500/tbielawa)   Gid: (  500/tbielawa)
Access: 2010-09-14 03:15:45.074722792 -0400
Modify: 2010-09-14 03:15:45.074722792 -0400
Change: 2010-09-14 03:15:45.074722792 -0400

相关内容