Shell-shell 打印两个文件夹下所有文件名相同,内容不同的文件
一个项目文件夹很久之前备份了一份,现在我想找目前这个项目在这段时间修改过的文件有那些。用shell如何递归找这两个文件夹下相同文件名,但内容不同的文件(这里不能按文件修改日期,要根据内容),然后打印出每个不同文件的路径和文件名。这个shell如何写?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(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
应该可以直接用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