比较多个文件

比较多个文件

我想要一个 bash 脚本来比较或查找存储在不同位置的多个文件的差异:

文件下/tmp/test/

  • A.txt
  • B.txt
  • C.txt

/home/oldtest与/下的文件进行比较

  • A.txt
  • B.txt
  • C.txt

健康)状况:

  1. 文件/tmp/test/A.txt仅与 进行比较/home/oldtest/A.txt(与其他文件类似 -B.txt与 进行比较B.txt)。

  2. 如果发现任何更改:状态应为“文件 A.txt 中需要修改”。

答案1

diffGNU 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

相关内容