sincroniza arquivos com extensão diferente no MacOS

1

Após uma sessão de fotos, tenho duas pastas: JPGs (arquivos * .jpg) e RAWs (arquivos * .CR2). Normalmente dou uma olhada na pasta JPGs e excluo aquelas que não gosto.

O que eu quero é criar um script bash para verificar:

 for file.cr2 in folder.getFiles
   if file.jpg is NOT in folder2.getfiles 
      delete file.cr2

Eu vi alguns exemplos com o rsync, mas com arquivos com a mesma extensão e eu não sou muito bom no bash, então eu posso fazer isso em C, mas eu quero aprender.

    
por Sergiodiaz53 19.09.2016 / 19:37

1 resposta

0

Tente isto:

for file in cr2files/*; do
   test=”jpgfiles/$(basename ${file:: -3})jpg”
   if [ ! –f “$test” ]; then
      echo “$file”
   fi
done

Se obtiver os resultados desejados, você poderá substituir a linha - echo “$ file” - com -rm “$ file” -. A linha - test = ”jpgfiles / $ (basename $ {file :: -3]) jpg” - remove o caminho e a extensão do nome do arquivo e os substitui por “jpgfile / filename.jpg”. Lembre-se de mudar os nomes de caminho “cr2files” e “jpgfiles” para os corretos. Você pode usar variáveis se quiser ou passar os nomes de caminho para o seu script em argumentos.

Editar:

O seu espaço em “Toshiba ser” estava bagunçando o nome de base. Aqui está a solução:

#!/bin /bash
IFS=’’
for file in “$1”/*; do
   test=”$2/$(basename ${file:: -3})jpg”
   if [ ! –f “$test” ]; then
      rm “$file”
   fi
done

Chame desse jeito ./removephotos.sh “volumes / toshiba ser / raw” "volumes / toshiba ser / jpg. Observe que não há nada entre as aspas simples no IFS = 'on line # 2. / p>     

por 19.09.2016 / 20:32