比较目录子结构和文件名,忽略文件类型/扩展名

比较目录子结构和文件名,忽略文件类型/扩展名

这部分内容已由比较两个目录的内容但我对这个问题有一点小小的改变。

我有目录 Dir1 和 Dir2。它们的子目录结构应该相同,这是我想要检查的。但我还想检查其中的文件。它们应该具有相同的文件名,但 Dir1 中的每个文件都有扩展名 .type1,而 Dir2 中的每个文件都有 .type2。当我使用上面链接的解决方案时,Dir1/bob/file.type1 和 Dir2/bob/file.type2 被视为不同。

如何使上面链接的解决方案对扩展视而不见?

答案1

就像是

diff <(cd Dir1 && find . | sort | sed 's/\.type1$//') <(cd Dir2 && find . | sort | sed 's/\.type2$//')

可能是一个解决方案。

该命令将隐藏.type1两个.type2目录中的扩展,因此它们不会影响diff

这是一个简单的例子:

user@hostname:/tmp/test-diff$ find Dir* | sort
Dir1
Dir1/file1.type1
Dir1/file3.type1
Dir2
Dir2/file2.type2
Dir2/file3.type2
Dir2/file4.type2

diff命令将突出显示file1Dir1<)中,但不在Dir2以及file2file4Dir2>)中,但不在Dir1

user@hostname:/tmp/test-diff$ diff <(cd Dir1 && find . | sort | sed 's/\.type1$//') <(cd Dir2 && find . | sort | sed 's/\.type2$//')
2c2
< ./file1
---
> ./file2
3a4
> ./file4

相关内容