У меня есть этот скриптBash - ошибка сценария, если папка с пробелами
#!/bin/bash
rename_files() {
title="${1##*${2} - }"
for filename in "$1/"*.*; do
case "${filename##*.}" in
doc|doc|doc)
mkdir -p -m 777 "/Users/Desktop/Documents Share/Downloaded/${title}"
new_path="/Users/Desktop/Documents Share/Downloaded/${title}/${title}.${filename##*.}"
let "iters=1"
while [ -f $new_path ] ; do
new_path=$new_path"$iters"
let "iters++"
done
echo "moving $filename -> $new_path"
mv "${filename}" "${new_path}"
;;
esac
done
}
rename_category() {
for path in "/Users/Desktop/Documents Share/Downloads/${1}"*; do
rename_files "$path" "$1"
done
}
rename_category DOC
Этот скрипт автоматически перемещает и переименовывает файлы, содержащиеся в /Users/Desktop/Documents Share/Downloaded
. Все работает нормально, если я использую папку с именем Documents
вместо Documents Share
. Я попытался использовать Documents\ Share
, но он не работает.
Здесь регистрирует ошибка
/Users/Desktop/Script.sh: line 11: [: /Users/Desktop/Documents: binary operator expected
Как я могу решить эту проблему?
'case '$ {filename ## *.}" В doc | doc | doc) '?? WTH? Удачи. – shellter
Только пример расширения. – DylanDog