Como diferenciar nomes de arquivos em dois diretórios (sem gravar em arquivos intermediários)?

24

Estou tentando fazer algo nos moldes:

diff 'ls -1a ./dir1' 'ls -1a ./dir2'

Mas isso não funciona por razões óbvias. Existe uma maneira melhor de conseguir isso (em 1 linha) do que isso?

ls -1a ./dir1 > lsdir1
ls -1a ./dir2 > lsdir2
diff lsdir1 lsdir2

Obrigado

    
por bguiz 04.01.2011 / 01:21

2 respostas

41

Você estava perto. No bash, você quer substituição do processo , não a substituição de comando:

diff <(ls -1a ./dir1) <(ls -1a ./dir2)
    
por 04.01.2011 / 01:52
6
diff -rq dir1 dir2

usando a opção -r, percorre árvores inteiras de diretório, verificando recursivamente as diferenças entre subdiretórios e arquivos que ocorrem em pontos comparáveis em cada árvore. O truque é usar a opção -q para suprimir as comparações linha a linha

    
por 04.01.2011 / 02:05