linux - 忽略文件类型的两个目录之间的区别?
问题描述
有没有一种比较两个目录但忽略文件扩展名的快速方法?我知道命令通常是:
diff dir1 dir2
但在这种情况下,dir1 中的 apple.gif 和 dir2 中的 apple.png 两者是不同的。
有没有办法让 apple.gif 和 apple.png 被认为是一样的?
解决方案
您可以使用 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
推荐阅读
- php - 如何在 url htaccess 中允许一个点?
- python - 除非指定超时,否则 Flask 或 Requests 将挂起,并挂起直到指定的超时
- wordpress - Gatsby.js 与 Wordpress 安装在子目录中
- android - 添加 firebase.firestore 包后应用程序开始崩溃
- cookies - 如何使用对流层为 CloudFront 分配设置 cookie?
- laravel - 如何更改 Larecipe v2.0 Laravel 包中的徽标?
- r - 在 R 中退出时无法保存工作区图像
- c# - 一个静态属性,第一次返回真,之后总是假
- javascript - 检查两个对象是否与javascript中的嵌套对象数组相同
- gradle - 当位于两个目录之一时,Gradle 无法解析 java 11 模块的包