Поддержка > Руководства и инструкции

Групповое переименование файлов

(1/1)

volandlm:
Предположим, что перед нами стоит задача во всех файлах с расширением ".ext", в достаточно разветвлённом дереве каталогов, заменить пробел на нижнее подчёркивание. Зачем? А просто нам захотелось разместить эти файлы в сети Интернет. Но ведь тогда все пробелы в ссылках будут заменены на "%20", что не "есть хорошо". Поэтому, без лишних слов, приступим к решению поставленной задачи.

Поскольку мы выбрали для использования unix-like систему, то решать задачу будем в консоли. Как известно, консоль является самой сильной стороной таких операционных систем. Поэтому и будем использовать её для всех задач, для которых это возможно, и оставим графические свисто-перделки для работы с видео и графикой.

Для начала нам нужно найти все такие файлы с нужным расширением (предполагается, что мы уже находимся на вершине нужного дерева каталогов, то есть выполнили команду cd /user/directory):

--- Код: ---find . -name "*.ext" | grep "\ "
--- Конец кода ---
   
Далее, будем просматривать все найденные файлы в цикле по одному:

--- Код: ---while read i; do "заменять_пробелы"; done
--- Конец кода ---

Далее, собственно замена пробелов:

--- Код: ---mv "$i" "`echo $i | sed s/\ /_/g`"
--- Конец кода ---

Теперь, когда стало ясно, "кто на ком стоял", объединим все шаги в одну последовательность:

--- Код: ---find . -name "*.ext" | grep "\ " | while read i; do mv "$i" "`echo $i | sed s/\ /_/g`"; done
--- Конец кода ---

Предупреждение. Если количество файлов отличается от нуля меньше, чем на машинный эпсилон, то городить вышеприведённый огород нет никакого смысла!

Навигация

[0] Главная страница сообщений

Перейти к полной версии