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>