Имеется примерно такой скрипт:
#!/bin/bash
d=$1
shift
cd "$1"
shift
until [ -z "$1" ]
do
if [[ -f "$(pwd)/$1" ]]
then
{
echo '# Копируется '$1'...'
if [[ -e "$d/$1" ]]
then
{
if zenity --question --text="$1 уже существует. Заменить?"
then cp "$1" "$d"
fi
}
else cp "$1" "$d"
fi
}
else
{
mkdir "$d/$1"
if [[ $(ls -1 "$1") ]]
then $0 "$d/$1" "$(pwd)/$1" $(ls -1 "$1")
fi
}
fi
shift
done
exit 0
скрипт должен получать путь к папке назначения, путь к исходной папке и список файлов в ней, а затем рекурсивно копировать их в папку назначения, попутно выводя сообщения о копируемом файле на стандартный вывод и спрашивая, заменять ли уже присутствующий файл, через zenity. Работает оно хорошо, но только до тех пор, пока в именах файлов не начнут появляться пробелы. Пробовал закрывать их с обеих сторон кавычками, заменял все " " на "\ " - бесполезно. Как решить эту проблему?
ps Также меня интересуют другие возможные варианты решения исходной задачи, которая заключается в добавлении в контекстное меню наутилуса нового пункта - отправки файла/папки на флешку. Просто cp здесь не особо поможет - нужно как минимум уведомление о том, что файл существует, а ещё лучше - прогресс-бар