Comparando a estrutura do diretório e os nomes dos arquivos, ignorando o tipo de arquivo / extensão

4

Isso foi parcialmente coberto por Comparando o conteúdo de dois diretórios , mas Eu tenho um leve toque nesse problema.

Eu tenho diretórios Dir1 e Dir2. Suas estruturas de subdiretórios devem ser as mesmas, o que é algo que quero verificar. Mas também quero verificar os arquivos dentro deles. Eles devem ter os mesmos nomes de arquivo, mas todos os arquivos dentro de Dir1 têm extensão .type1 e cada arquivo em Dir2 tem .type2. Quando eu uso a solução vinculada acima Dir1 / bob / file.type1 e Dir2 / bob / file.type2 são vistos como diferentes.

Como faço para que a solução vinculada acima cegue as extensões?

    
por AlphaNumeric 06.09.2016 / 11:27

1 resposta

1

Algo como

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

poderia ser uma solução.

O comando ocultará .type1 e .type2 extensões nos dois diretórios para que eles não afetem o diff .

Aqui está um exemplo simples:

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

O comando diff destacará que file1 está em Dir1 ( < ), mas não em Dir2 e file2 e file4 estão em Dir2 ( > ), mas não em 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
    
por MaxChinni 06.09.2016 / 11:56