find . -type f -name "*\?*" | while read f;do mv "$f" "${f//[^0-9A-Za-z.\/\(\)\ ]/_}";done
Эта команда находит все файлы в текущем каталоге и его подкаталогах, у которых в имени содержится символ «?». Затем она использует цикл, чтобы переименовать каждый файл, заменяя все символы, кроме цифр, букв, точки, слэша, скобок и пробелов на символ подчеркивания «_».
Альтернативным подходом может быть использование утилиты «rename» или написание сценария на языке программирования, который переименует файлы согласно заданным правилам.
Аргументы, передаваемые команде, необходимы для поиска файлов с символом «?» в имени и для выполнения замены символов в их именах.