Подстановки вашей команды $(echo $path)
и $(basename "{}")
выполняются вашей оболочкой до выполнения find
. И вам не нужно echo
переменная $path
. Вместо этого вы можете выполнить небольшой сценарий оболочки:
find . -type f -name "*.$ext" -exec sh -c '
targetpath=$1; shift # get the value of $path
for file; do
mv -i "$file" "$targetpath"
synoindex -a "$targetpath/${file##*/}"
done
' sh "$path" {} +
Запускается find
в текущем каталоге .
, поиск обычных файлов (-type f
), заканчивающийся расширением $ext
(* 1013) *) и выполняет небольшой скрипт оболочки, передавая переменную $path
в качестве первого аргумента скрипту. Следующие аргументы - это пути к файлам, найденные find
.
Расширение параметра ${file##*/}
удаляет самый длинный префикс */
из файла, и результатом является базовое имя. Если ваша переменная $path
уже содержит конечный sla sh /
, пропустите /
после $targetpath
.