我想要一个 bash 脚本来比较或查找存储在不同位置的多个文件的差异:
文件下/tmp/test/
- A.txt
- B.txt
- C.txt
/home/oldtest
与/下的文件进行比较
- A.txt
- B.txt
- C.txt
健康)状况:
文件
/tmp/test/A.txt
仅与 进行比较/home/oldtest/A.txt
(与其他文件类似 -B.txt
与 进行比较B.txt
)。如果发现任何更改:状态应为“文件 A.txt 中需要修改”。
答案1
diff
GNU diffutils 有一个递归比较选项:
diff -qrs /dir/A /dir/B
比较目录:-q
安静地(即不打印差异,它只报告文件不同),-r
递归地(包含所有子目录的完整树),-s
报告相同的文件。
答案2
cd /tmp/test
for i in *.txt; do diff -q $i /home/oldtest/$i; done
对于每个有差异的文件,输出将为“文件 A.txt 和 ../home/oldtest/A.txt 不同”。
答案3
cd /tmp/test/;
for x in *; do \
cmp -s "$x" /home/oldtest/"$x" || echo "Modification required in file $x";
done;|more
答案4
我不确定是否有人会为您编写一个脚本,但您可以使用diff
.只需使用diff -q
.
例如:
$ diff -q .vimrc .bashrc
Files .vimrc and .bashrc differ
如果您想自动化,可以使用脚本。
有关学习如何编写 bash 脚本的良好参考,请查看此处:http://bash.cyberciti.biz/guide/Main_Page