На сервере 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_\?
Есть ли у вас какие-либо идеи о том, как решить эту проблему?