Shell-shell 打印两个文件夹下所有文件名相同,内容不同的文件

发布于 2016-11-19 18:05:19 字数 132 浏览 1335 评论 2

一个项目文件夹很久之前备份了一份,现在我想找目前这个项目在这段时间修改过的文件有那些。用shell如何递归找这两个文件夹下相同文件名,但内容不同的文件(这里不能按文件修改日期,要根据内容),然后打印出每个不同文件的路径和文件名。这个shell如何写?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

归属感 2017-06-22 01:01:57

写了个脚本,测试可用。

#!/bin/bash
FOLDER_A='/tmp/fold1/'
FOLDER_B='/tmp/fold2/'

for file_a in `ls ${FOLDER_A}`;
do
file_b="${FOLDER_B}${file_a}"
if [ -f "${file_b}" ]; then
diff ${file_a} ${file_b} >/dev/null
if [[ $? -ne 0 ]];
then
echo ${file_b}
fi;
fi;
done

泛泛之交 2017-02-04 12:06:55

应该可以直接用diff就可以了
#!/bin/bash
diff -bur folderA folderB

e.g
Input:

diff -bur test test2

Output:

diff -bur test/a test2/a
--- test/a 2012-07-16 22:28:36.380974023 +0800
+++ test2/a 2012-07-16 22:30:07.213424444 +0800
@@ -0,0 +1 @@
+test2 a
diff -bur test/b test2/b
--- test/b 2012-07-16 22:28:36.380974023 +0800
+++ test2/b 2012-07-16 22:30:17.377474842 +0800
@@ -0,0 +1 @@
+test2 b
diff -bur test/c test2/c
--- test/c 2012-07-16 22:28:36.380974023 +0800
+++ test2/c 2012-07-16 22:30:29.225533597 +0800
@@ -0,0 +1 @@
+test2 c

如果在两个文件中存在不同文件名的文件,而你又不想看到,那么这么操作:

diff -bur test test2 > result.log
sed -i '/Only in/d' result.log

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文