Shell Geek: переименование нескольких файлов одновременно

Допустим, у вас есть каталог с сотнями файлов с неправильными именами файлов, и вы хотите заменить каждое имя файла, содержащее test , на prod . (это надуманный пример). Мы можем легко сделать это с помощью команды «for» в bash, в сочетании с небольшим количеством доброты bash. Сегодня мы узнаем, как заменить текст в переменной в цикле for.

Команда «для» работает так:

для var in; do $ var; done

Вы можете заменить любым шаблоном сопоставления файлов, например * или * .txt, и заменить любой командой linux. Команда будет выполняться последовательно для каждого из файлов, сопоставленных с шаблоном сопоставления файлов.

Именно здесь обработка переменных bash делает ее еще более интересной. Вместо того, чтобы делать что-то вроде «mv $ var», мы можем заменить текст в имени файла следующим синтаксисом:

$ {Вар/originaltext/ReplaceText}

Так что теперь, если мы запустим эту команду в нашем каталоге:

для f в *; сделать mv $ f $ {f/test/prod}; сделано

Для каждого файла, соответствующего *, bash выполнит команду, подобную этой:

mv test.config prod.config

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

И да, я понимаю, что есть ряд инструментов, которые могут выполнять переименование нескольких файлов.

Оцените статью
TutoryBird.Ru
Добавить комментарий