Это линия нарушения. Вам нужно экранировать кавычки при печати, но не при выполнении.
_find=`find "$_pwd" -maxdepth 1 -type d | wc -l`
Попробуйте следующее:
for file in cr2files/*; do
test=”jpgfiles/$(basename ${file:: -3})jpg”
if [ ! –f “$test” ]; then
echo “$file”
fi
done
Если он получит желаемые результаты, вы можете заменить строку - echo «$ file» - на - rm «$ файл" -. Строка - test = ”jpgfiles / $ (basename $ {file :: -3]) jpg” - удаляет путь и расширение из имени файла и заменяет их на «jpgfile / filename.jpg». Не забудьте изменить пути «cr2files» и «jpgfiles» на правильные. Вы можете использовать переменные, если хотите, или передать имена путей к вашему скрипту в аргументах.
Редактировать:
Ваше место в «Toshiba ser» испортило базовое имя. Вот решение:
#!/bin /bash
IFS=’’
for file in “$1”/*; do
test=”$2/$(basename ${file:: -3})jpg”
if [ ! –f “$test” ]; then
rm “$file”
fi
done
Назовите это так ./removephotos.sh «volume / toshiba ser / raw» «volume / toshiba ser / jpg». Обратите внимание, что между одинарными кавычками в IFS = '' on line ничего нет. # 2.