Eu tenho 2 diretórios (test1 e test2) com algum arquivo deles. Como posso escrever um bash para encontrar o nome do arquivo duplicado e o tamanho do arquivo desses diretórios e remover um deles de um diretório?
relate perguntas
-
Subtraindo a mesma coluna entre duas linhas no awk
-
Um script que imprime as linhas de um arquivo com seu comprimento [fechado]
-
exportar variáveis env programaticamente, via stdout do comando [duplicado]
-
Dividir por delimitador e concatenar problema de string
-
MySQL Select com função IN () com array bash
Aqui está um comando que deve atingir o que você deseja:
Explicação:
for f in test1/*
: Faz um loop em cada arquivo em test1$(basename $f)
: Retorna o nome base do arquivo passado pelo loop$(stat -c %s $f)
: Retorna o tamanho do arquivo passado pelo loopc
no final dostat
bloco é para que a saída seja lida como bytes porfind
find test2 -name $(basename $f) -size $(stat -c %s $f)c -delete
: Encontre os arquivos correspondentes e exclua-os com-delete
Para um funcionamento a seco, omita a
-delete
bandeira.Observação: isso não funcionará no MacOS porque o
stat
comando interno não suporta o-c
sinalizador. Em vez disso, instale a versão gnu do stat.