Это было частично покрыто Сравнением содержания двух каталогов, но я имею немного скручивание на этой проблеме.
У меня есть каталоги Dir1 и Dir2. Их структуры подкаталога должны быть тем же, которое является чем-то, что я хочу проверить. Но я также хочу проверить файлы в них. У них должны быть те же имена файлов, но каждый файл в Dir1 имеет расширение .type1, и каждый файл в Dir2 имеет .type2. Когда я использую решение, связанное выше Dir1/bob/file.type1, и Dir2/bob/file.type2 просматриваются как отличающиеся.
Как я делаю вышеупомянутое связанное решение слепым к расширениям?
Что-то как
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
команда выделит это file1
находится в Dir1
(<
), но не в Dir2
и file2
и file4
находятся в Dir2
(>
), но не в 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