Pesquisar 2 diretórios com loop e encontrar arquivos duplicados e remover um deles de um dos dois diretórios

0

Eu tenho 2 diretórios (test1 e test2) com algum arquivo em seus. Como eu posso escrever um bash para encontrar o nome do arquivo duplicado ane filesize dos diretórios theise E remover um deles de um diretório?

    
por fatemeh ghanbari 12.02.2018 / 07:45

1 resposta

1

Aqui está um comando que deve alcançar o que você deseja:

for f in test1/*; do find test2 -name $(basename $f) -size $(stat -c %s $f)c -delete; done

Explicação:

  • for f in test1/* : faz um loop sobre cada arquivo no test1
  • $(basename $f) : Retorna o nome base do arquivo passado pelo loop
  • $(stat -c %s $f) : Retorna o tamanho do arquivo passado pelo loop
  • O c no final do bloco stat é para que a saída seja lida como bytes por find
  • find test2 -name $(basename $f) -size $(stat -c %s $f)c -delete : encontre arquivos correspondentes e exclua-os com -delete

Para uma execução a seco, omita o sinalizador -delete .

Nota: Isso não funcionará no MacOS porque o comando stat interno não suporta o -c sinalizador. Em vez disso, instale a versão do gnu do stat.

    
por 12.02.2018 / 18:49