A substituição do comando '…'
substitui a saída do comando na linha de comando, portanto diff
vê a lista de arquivos nos dois diretórios como argumentos. O que você deseja é que diff
veja dois nomes de arquivos em sua linha de comando e tenha o conteúdo desses arquivos como as listagens de diretório. Isso é o que a substituição de processos faz.
diff <(ls old) <(ls new)
Os argumentos para diff
serão parecidos com /dev/fd/3
e /dev/fd/4
: eles são descritores de arquivos correspondentes a dois canais criados por bash. Quando diff
abrir esses arquivos, ele será conectado ao lado de leitura de cada canal. O lado de gravação de cada pipe está conectado ao comando ls
.