ЗАМЕНА пробелов в файлах и папках стандартными средствами bash
используется андройд устройство с termux. Такая ситуация, папки и файлы должны быть в оригинальном виде, а на конвертацию надо отправлять.
Самый эффективный алгоритм получается такой:
1.заменить пробелы на спецсимволы 2.выполнить конвертацию 3.заменить спецсимволы обратно на пробелы
в случаях с файлами
замена:
find "/storage/emulated/0/Notifications" -type f -name "* *" -exec bash -c 'mv "$0" "${0// /♡}"' {} \;
обратная замена:
find "/storage/emulated/0/Notifications" -type f -name "*♡*" -exec bash -c 'mv "$0" "${0//♡/ }"' {} \;
работает, пока папка с пробелами не попадётся.
Найден также такой вариант замены пробелов и в папках и в файлах:
cd "/storage/emulated/0/Notifications"
for x in *" "*; do mv -- "$x" "${x// /♡}" done
но он отрабатывает только файлы и папки в текущей папке, то есть если в папке /storage/emulated/0/Notifications есть подпапка "поющие трусы" то она переименуется, а вот все файлы и папки которые внутри папки "поющие трусы" уже не переименовываются.
То есть глубина вложения равна единице, а надо минимум пятёрку, а лучше без ограничений