Официальная возможность получить лицензионный софт бесплатно.
Giveaway of the Day
Это не реклама!

Щелкните для получения прогноза по Биробиджану


четверг, 28 апреля 2016 г.

Массовое переименование файлов в bash с заменой символов в середине имени

Притомили коллеги, лепящие в именах файлов все символы, предусмотренные юникодом. Кое-кто даже умудрился (честно, я не знаю, как) сохранить файл, в имени которого несколько штук \127!

Но это уже клинический случай, а есть более мягкие, когда по неизвестной мне причине в именах появляются точки с запятой. Для устранения этого безобразия заменим ";" на ",":

find -iname *\;*|while IFS='' read line; \
  do NEWNAME=`echo "$line"|sed 's/\;/\,/g'`; \
  mv "$line" "$NEWNAME"; done

Пришлось использовать переменную, потому что мне не удалось заставить задействованную в ней конструкцию правильно отдаться sed-у из-за возможных пробелов в именах файлов.

Комментариев нет:

Отправить комментарий

Пожалуйста, воздержитесь от грубостей и персональных нападок.
Я не против матерщины, но она должна быть уместной и использоваться для выражения эмоций, а не в качестве основного средства выражения мыслей.