Пакетное удаление специальных символов из имен файлов в Linux
Я пытаюсь удалить все специальные символы из нескольких загруженных файлов.pdf и наткнулся на решение, которое я искал, хотя и в среде OS X:
функция автоматического удаления специальных символов из имен файлов при сохранении в MacOS X
Может ли аналогичный метод - либо с помощью sed
или какая-то другая функция - быть реализованной в среде Linux?
4 ответа
Вы можете сделать это с rename
команда. Если вы находитесь в папке с файлами.pdf со специальными символами:
rename 's/[^a-zA-Z0-9]//g' *.pdf
Это удалит любые символы из файлов, оканчивающихся на .pdf
это не AZ в любом случае, или цифры. Вы можете добавить в этот список:
rename 's/[^a-zA-Z0-9_]//g' *.pdf
Эта версия позволяет подчеркнуть.
Для обработки всего имени файла, а также нескольких файлов:
- добавлять
/g
обрабатывать все имя файла. - добавлять
_
заменить на подчеркивание (если требуется) - Добавьте любые дополнительные "типы" файлов или отдельные имена файлов в конце, разделенные пробелами.
переименуйте 's/[^a-zA-Z0-9_.]/_/g' *mp4 *avi
Существует очень удобный инструмент под названием «Детокс» , который сделает за вас именно эту трансформацию/переименование.
Вы можете передать ему имя каталога (возможно, рекурсивное) или шаблон конкретных файлов:
detox ./
или
detox *.pdf
Он входит в состав большинства дистрибутивов Linux.
Для файла в *; do mv "$file" $(повторить "$ file" | sed -e 's / [^ A-Za-z0-9.-] // g'); сделанный &