Como ver quais arquivos são idênticos, dada uma lista de arquivos em dois projetos

1

Eu tenho dois projetos chamados project1 e project2 com árvores de arquivos idênticas, como segue.

project1 /, project2 /
.
├── src
│   ├── index.html
│   ├── main.js
│   ├── normalize.js
│   ├── routes
│   │   ├── index.js
│   │   └── Home
│   │       ├── index.js
│   │       └── assets
│   ├── static
│   ├── store
│   │   ├── createStore.js
│   │   └── reducers.js
│   └── styles
└── project.config.js

Agora, quero comparar para ver se os seguintes arquivos de cada árvore são idênticos.

arquivos para comparar.txt
src/main.js
src/routes/index.js
src/store/reducers.js
project.config.js

Existe alguma maneira de fazer isso usando um único comando unix que aproveita a lista de arquivos-to-compare.txt sem ter que fazer um comando separado para cada arquivo na lista? Se sim, como?

Edit: Esta é uma pergunta diferente do que esta porque essa pergunta pergunta sobre a comparação de todos os arquivos em dois diretórios. Esta questão pergunta sobre arquivos específicos espalhados por vários diretórios. Excluindo muitos daqueles que teriam sido incluídos pelas respostas à outra pergunta.

    
por Mowzer 12.11.2018 / 02:02

1 resposta

2

Em uma única linha - não é um único comando - chamando diff uma vez para cada:

while IFS= read -r filename; do diff project1/"$filename" project2/"$filename"; done < files-to-compare.txt

Isso lê o arquivo files-to-compare.txt linha por linha, garantindo que nada atrapalhe lendo a linha inteira , então chama diff com esse nome de arquivo em cada um dos diretórios project1 e project2.

    
por 12.11.2018 / 02:57