У меня есть файловая система с большим количеством файлов, которые я хочу использовать на компьютере с Windows. Нелегальные символы в именах файлов являются проблемой, поэтому я искал команду bash, которая рекурсивно санирует незаконные символы из всех файлов.Массовое переименование файлов с двойной цитатой в имени
Я нашел это решение (https://stackoverflow.com/a/19009177/7394134):
find . -name "*[<>:\\|?*]*" -exec bash -c 'x="{}"; y=$(sed "s/[<>:\\|?*]\+/-/g" <<< "$x") && mv "$x" "$y" ' \;
Это делает работу штрафа для большинства файлов, но она не работает с файлами, содержащими двойные кавычки и выдает следующее сообщение об ошибке:
bash: (остальное имя файла после двойной кавычки): команда не найдена
Я нашел несколько разные вопросы, такие как «R эмулировать файлы, содержащие двойные кавычки "или" Удалить двойные кавычки с sed в файле ", но, к сожалению, я не смог перенести их решения на успешную модификацию вышеприведенной команды.
Примечание. Даже если могут быть однострочные линии, которые намного проще (я хотел бы их увидеть!), Я хочу понять эскапаж при передаче имен файлов через -exec в три команды, выполняемые bash , Можно ли создать команду, которая удаляет как двойные, так и одинарные кавычки таким образом?