Comparar o conteúdo de dois diretórios na linha de comando

Anonim

Para comparar e listar os diferentes conteúdos de dois diretórios sem a saída extra obtida por meio de comandos como diff, você pode usar o comando comm. Para começar, inicie o Terminal e digite o seguinte comando, ajustando os caminhos do diretório conforme apropriado:

comm -3 <(ls -1 pasta1) <(ls -1 pasta2)

A saída listada serão os arquivos que são diferentes em cada pasta, com arquivos exclusivos da pasta 1 alinhados à esquerda e arquivos exclusivos da pasta 2 alinhados à direita.

Por exemplo, para comparar o conteúdo de uma pasta chamada “Pictures” e uma pasta chamada “OldPictures”, ambas armazenadas no diretório de downloads do usuário, a sintaxe seria a seguinte:

comm -3 <(ls -1 ~/Downloads/Pictures) <(ls -1 ~/Downloads/OldPictures)

O resultado pode ser o seguinte:

$ comm -3 <(ls -1 ~/Downloads/Pictures) <(ls -1 ~/Downloads/OldPictures) Folder-1-File.PNG Folder -2-File copy.PNG photo 1 copy.PNG photo 3.PNG

Observe o recuo, que mostra quais arquivos são exclusivos de cada pasta. No exemplo acima, os arquivos “photo 1 copy.PNG” e “photo 3.png” estão alinhados à direita, portanto são exclusivos do diretório OldPictures e Folder-1-File.PNG e Folder-2-File copy.PNG são exclusivos da pasta Pictures original.

Isso funciona muito bem no Mac OS X, mas é um comando Unix genérico, então você deve achá-lo utilizável no Linux e em outras variantes também. Se você tiver algum problema de compatibilidade ou achar que este comando é desnecessariamente complexo, tente usar diff para executar a mesma função.

Grande truque encontrado por @climagic no Twitter, @osxdaily também está lá!

Comparar o conteúdo de dois diretórios na linha de comando