Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 在shell脚本中,如何比较两个文件并知道哪一个是最新的?_Linux_Shell - Fatal编程技术网

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

Linux 在shell脚本中,如何比较两个文件并知道哪一个是最新的?,linux,shell,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中的文件最新。

我有两个文件夹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中的文件最新。因此,在这种情况下,我不想备份。如何做以及如何检查哪个文件较新?

最简单的方法是使用if primary表达式-nt ie

报告说:

[FILE1-nt FILE2]如果FILE1的更改时间比以前长,则为True 文件2,或者如果文件1存在而文件2不存在

在b.txt中查找差异

在a.txt中查找差异

要查找上次修改的文件,请在末尾查找上次修改的文件

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


使用stat%Y filename获取修改时间,并对其进行比较。或者使用-nt比较运算符。是否缺少一个$missing–应该是diffResult=$…,否?虽然这是一个问题,但-只是IMHO-您应该学习git。执行diff并检查时间和拷贝是可行的,但是一些版本控制可能更能防止错误,也有更多的功能。。。另外,rsync可能会有帮助…我会在使用test时引用文件名,例如,[]以避免在A/fileX或B/fileX被移动或删除时出现错误。我已经知道区别,我想知道哪个是最新的fgrep-v-fab&&ls-lrt A B|tail-1
if [ "A/fileX" -nt "B/fileX" ]
then
  mv A/fileX B/fileX
done
fgrep -v -f a.txt b.txt 
fgrep -v -f b.txt a.txt 
ls -lrt   
fgrep -v -f a b && ls -lrt a b  | tail -1