Пакетное удаление специальных символов из имен файлов в 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'); сделанный &

Другие вопросы по тегам