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

前端开发 前端开发 主题:1148 回复:2395

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

归属感 发布于 2016-11-19 字数 247 浏览 1190 回复 2

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

发布评论

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

支持 Markdown 语法,需要帮助?

评论(2

归属感 2017-06-22 2 楼

写了个脚本,测试可用。

!/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 1 楼

应该可以直接用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