Comando de backup alterando tipos de arquivo no Linux

0

Estou passando por um diretório e copiando as imagens com as extensões de arquivo mostradas para uma nova pasta. No entanto, algumas das imagens têm o mesmo nome, por isso estou usando o comando de backup.

O problema que estou tendo ao renomear e copiar é que o tipo de arquivo muda de uma imagem para o logotipo de reciclagem (não tenho certeza do que isso significa).

Também é possível ter o arquivo 'image_2101.JPG' renomeado para 'image_2101.JPG.JPG' ao invés de apenas colocar. ~ 1 ~ quando copiado

find /root/folder/images \( -name  '*.png' -o  -name '*.jpg' -o -name '*.JPG' \) -exec cp --backup=numbered -t/root/folder/CopiedImages {} +
    
por J Doe 19.11.2017 / 16:11

1 resposta

2

cp --backup calcula a extensão de backup ~ para os arquivos e a opção numbered faz com que use ~1~ , ~2~ e assim por diante. Portanto, para alterá-la, você deve criar um script para alterar o comportamento.

Este script criaria uma cópia de cada imagem em sourcefolder para um único destino de pasta (seria não cria qualquer subdiretório), evitando colisões anexando um número ao arquivo, logo antes da extensão . Note que toda vez que é executado, ele duplicará todos os arquivos, assim como o seu script. A parte while IFS é necessária para nomes de arquivos com espaços.

sourcefolder="/root/folder/images"
destinationfolder="/root/folder/CopiedImages"
find "${sourcefolder}" \( -name  '*.png' -o  -name '*.jpg' -o -name '*.JPG' \) -print0 | while IFS= read -r -d $'
sourcefolder="/root/folder/images"
destinationfolder="/root/folder/CopiedImages"
find "${sourcefolder}" \( -name  '*.png' -o  -name '*.jpg' -o -name '*.JPG' \) -print0 | while IFS= read -r -d $'%pre%' img; do
    imgname="${img##*/}"
    ext="${imgname##*.}"
    noext="${imgname%.*}"
    destname="${destinationfolder}/${noext}.${ext}"
    count=0
    while [ -f "${destname}" ] ; do
        count=$((count+1))
        destname="${destinationfolder}/${noext}.${count}.${ext}"
    done
    cp "${img}" "${destname}"
done
' img; do imgname="${img##*/}" ext="${imgname##*.}" noext="${imgname%.*}" destname="${destinationfolder}/${noext}.${ext}" count=0 while [ -f "${destname}" ] ; do count=$((count+1)) destname="${destinationfolder}/${noext}.${count}.${ext}" done cp "${img}" "${destname}" done
    
por 19.11.2017 / 18:08