Comparar o conteúdo de dois diretórios na linha de comando
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á!