удаление скрытых специальных символов из имен файлов RHEL - PullRequest
0 голосов
/ 16 ноября 2018


На сервере RHEL7 мы получаем файлы с других ноутбуков с помощью outlook или прямого подключения, эти файлы хранятся в драйвере CIFS, настроенном с кодировкой iocharset = iso8859-1.

По некоторым причинам и, возможно, из-за проблем с кодировкой, приложение не распознает недопустимые символы и заменяет их на ¿, но на системном уровне тот же недопустимый символ заменяется на?, Поэтому я создал небольшой скрипт для переименования имен файлов и замены нормальный ? по ¿:

find . -name "*[?]*" -exec bash -c 'x="{}"; y="$(sed "s/[?]\+/¿/g" <<< "$x")" && mv "$x" "$y" ' \;

Проблема в том, что недавно я заметил, что есть скрытый / добавленный ранее?, Моя команда больше не работает, система также не видит /, чтобы найти его, мне нужно нажать кнопку вкладки, чтобы найти скрытый /
Вот пример:

ls
Salvage?_Not_Released_?

Я набираю mv Salvage и нажимаю Tab , чтобы завершить имя файла, затем появляется /?

mv Salvage\?_Not_Released_\?

Есть ли у вас какие-либо идеи о том, как решить эту проблему?

...