Сравнение подструктуры каталога и имен файлов, игнорирующих тип файла / расширение

Это было частично покрыто Сравнением содержания двух каталогов, но я имею немного скручивание на этой проблеме.

У меня есть каталоги Dir1 и Dir2. Их структуры подкаталога должны быть тем же, которое является чем-то, что я хочу проверить. Но я также хочу проверить файлы в них. У них должны быть те же имена файлов, но каждый файл в Dir1 имеет расширение .type1, и каждый файл в Dir2 имеет .type2. Когда я использую решение, связанное выше Dir1/bob/file.type1, и Dir2/bob/file.type2 просматриваются как отличающиеся.

Как я делаю вышеупомянутое связанное решение слепым к расширениям?

4
задан 13 April 2017 в 15:24

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 команда выделит это 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
1
ответ дан 1 December 2019 в 10:36

Другие вопросы по тегам:

Похожие вопросы: