Linux 在shell脚本中,如何比较两个文件并知道哪一个是最新的?
我有两个文件夹A和B。A是我的工作目录,B是我的备份文件夹 我比较两个文件夹中的文件,如果A中有任何更改,则从A备份到B 所以,我用了: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中的文件最新。
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