como verificar se há duplicatas e renomear o arquivo se houver algum tempo copiando-as de outra origem

0

É um script no bash, ele copia arquivos de um diretório para outro, mas pode haver duplicatas em um subdiretório. Portanto, ao copiar, ele deve reconhecer se um outro arquivo tem o mesmo nome e, em caso afirmativo, alterar o nome do arquivo que está sendo copiado. Eu tentei isso

for i in $1; do
    find $i -type f -name img*.jpg -exec cp {} $2 \;
    for j in $2; do
        find $j -type f -name $i | while read filename; do if test "$i"="$j"; then mv $i new_filename; fi done
    done
done 

mas recebo uma mensagem de erro dizendo que um nome de arquivo não deve conter barras que é um pouco estranho ... sou um iniciante completo, por favor, comente se você colocar qualquer código. obrigado.

    
por guest_112241 23.11.2013 / 20:06

1 resposta

0

Seu $1 deve ser uma lista de diretórios, porque é o primeiro parâmetro após a localização. OK?
Na sua primeira descoberta, você deve citar o asterisco: -name 'img*.jpg'
Então você copia para o diretório $2 . Portanto, $2 em seu segundo é um diretório e apenas um.
Se sua intenção é examinar todos os arquivos em $2 , use for j in $2/* E, em seguida, find $2 -type f -name $i | while ...
BTW, se a chance é que os nomes podem conter espaços, use aspas duplas em torno dos parâmetros.

    
por 03.12.2013 / 19:10

Tags