首页 > 解决方案 > 忽略文件类型的两个目录之间的区别?

问题描述

有没有一种比较两个目录但忽略文件扩展名的快速方法?我知道命令通常是:

diff dir1 dir2

但在这种情况下,dir1 中的 apple.gif 和 dir2 中的 apple.png 两者是不同的。

有没有办法让 apple.gif 和 apple.png 被认为是一样的?

标签: linux

解决方案


您可以使用 bash for 循环将两个目录复制到 /tmp/ 而不使用文件扩展名,然后在复制的目录上运行 diff,最后删除临时目录,例如:

假设你有 dir/1 和 dir/2 你想比较 1 和 2。

#create all dirs and subdirs
cd dir;
for i in `find . -type d `;do  mkdir /tmp/$i ;done
#copy all files without extension(remove string after last '.')
for i in `find . -type f `;do cp $i /tmp/`echo $i | rev | cut -d'.' -f 2- | rev` ;done
#run diff
diff /tmp/1 /tmp/2
#clean up ,remove created dirs
rm -rf /tmp/1 /tmp/2

推荐阅读