A "solução" que você mencionou é realmente ruim (não é possível lidar com nomes estranhos de arquivos, por exemplo) e completamente desnecessária. Basta usar diff
diretamente:
diff -r "$PATH1" "$PATH2"
Isso recursivamente ( -r
) compara os diretórios e informa se os arquivos estão presentes ou ausentes. Por exemplo:
$ tree
.
├── dirA
│ ├── file1
│ └── file2
└── dirB
└── file{1}
$ diff -qr dirA dirB
Files dirA/file1 and dirB/file1 differ
Only in dirA: file2
Only in dirB: file3
A opção -q
significa "silenciosa", ela informará somente se os arquivos são diferentes sem imprimir as diferenças. No exemplo acima, os arquivos dirA/file1
e dirB/file1
têm conteúdos diferentes. Este formato é tão simples quanto você pode esperar e será bastante rápido, mesmo para diretórios grandes.