在shell脚本中,如何比较两个文件并知道哪个是最新的?

时间:2017-04-27 18:54:18

标签: linux shell

我有两个文件夹A& B. A是我的工作目录,B是我的备份文件夹。

如果A中有任何更改,我会比较两个文件夹中的文件和备份(从A到B)。

所以,我用过:

diffResult=( diff -q "${A/file-nmae}" "${B/file-name}" )

if [ -n "${diffResult}" ]; then

    <code to copy>
else

    <something else>
fi

唯一的问题是,在某些情况下,B中的文件最新是A.所以我不想在这种情况下备份。我该怎么做以及如何检查哪个文件更新?

2 个答案:

答案 0 :(得分:4)

最简单的方法是使用if主要表达式-nt,即

if [ "A/fileX" -nt "B/fileX" ]
then
  mv A/fileX B/fileX
done

[ documentation ]说:

  

[FILE1 -nt FILE2]如果FILE1最近被更改,则为真   FILE2,或者如果FILE1存在而FILE2不存在。

答案 1 :(得分:0)

  

在b.txt

中查找不同的内容
fgrep -v -f a.txt b.txt 
  

在a.txt

中查找不同的内容
fgrep -v -f b.txt a.txt 
  

查找上次修改后的最后修改文件

ls -lrt   
  

要查找更改和上次修改使用

fgrep -v -f a b && ls -lrt a b  | tail -1