ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Как использовать Bash для изменения расширения файла для нескольких файлов в папке

Как использовать Bash для изменения расширения файла для нескольких файлов в папке

В этой статье будет обсуждаться быстрый способ использования Bash для переименования файлов с одного расширения на другое. Для этого мы будем использовать цикл bash, поиск, переименование и команду mv.

 

Метод 1: цикл Bash

Наиболее распространенный способ рекурсивного изменения расширений файлов в каталоге – использовать цикл for в bash. Мы можем предложить пользователю ввести целевой каталог, старое расширение и новое расширение для переименования с помощью сценария bash.

 

Шаг 1. Сборка сценария

Приступим к сборке сценария. Первым делом нам нужно получить целевой каталог. Для этого мы можем читать как:

#! /bin/bash
echo "Введите целевой каталог"
read target_dir
cd $ target_dir

echo "Введите расширение файла для поиска без точки"
read old_ext

echo "Введите новое расширение файла для переименования без точки"
read new_ext
echo " $ target_dir, $ old_ext, $ new_ext"

 

Приведенный выше сценарий запросит у пользователя каталог для обработки, а затем cd в заданный каталог.

Далее мы получаем старое расширение без точки (.); наконец, мы получаем новое расширение для переименования файлов.

Теперь перейдем к обработке файлов. За это; мы можем реализовать простое правило, которое рекурсивно ищет файлы как:

for file in *.$old_ext
do
mv -v "$file" "${file%.$old_ext}.$new_ext"
done;

 

Приведенный выше цикл for будет искать в переданном каталоге все файлы со старым расширением и переименовывать их в новое расширение.

Чтобы получить подробную информацию, мы используем команду mv с -v. Вы можете подавить этот вывод, заменив флаг -v на –

 

Шаг 2: Запуск сценария

Теперь давайте проверим сценарий. Окончательный сценарий приведен ниже:

#! /bin/bash
echo "Введите целевой каталог"
read target_dir
cd $ target_dir

echo "Введите расширение файла для поиска без точки"
read old_ext

echo "Введите новое расширение файла для переименования без точки"
read new_ext

echo " $ target_dir, $ old_ext, $ new_ext "

for file in *.$old_ext
do
mv -v "$file" "${file%.$old_ext}.$new_ext"
done;

 

В этом тесте мы будем использовать каталог /var/log и переименовать все файлы .log в .bak. Вот содержимое каталога перед запуском скрипта.

$ ls l /var/log/ | grep .log

 

Теперь давайте запустим сценарий.

$ chmod +x extensions.sh
$ sudo ./extensions

 

На скриншоте выше показан сценарий, обрабатывающий файлы и переименовывающий все файлы с .log в .bak.

Поскольку это интерактивный сценарий, он пригодится, когда вы не хотите жестко кодировать расширение.

Ниже приводится содержимое каталога /var/log после сценария.

$ ls -l / var / log / | grep .bak

 

Чтобы отменить изменения, измените старое расширение на .bak, а новое расширение на .log.

 

Метод 2: переименовать команду

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

Для установки переименования используйте команду:

$ sudo apt-get install rename -y

 

После установки вы можете использовать команду переименования как:

# перейти в целевой каталог
cd /var/log/
# изменить расширение
sudo rename 's/\.log/.bak/' *.log

 

Чтобы отменить изменения, измените расширение .bak на .log и наоборот.

$ sudo rename 's/\.bak/.log/' *.bak

Метод 3: команда MMV

Вы также можете использовать команду mmv, которая позволяет перемещать несколько файлов одновременно. Установите mmv с помощью команды:

$ sudo apt-get install mmv

 

Чтобы переименовать файлы с помощью команды mmv:

$ cd /var/log/
mmv "*.csv" "#1.xls"

#1 перемещает файлы в текущий каталог. После того, как вы запустите команду, она переименует все файлы .log в указанное расширение.

 

Подведение итогов

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

Спасибо за чтение и не забудьте поделиться!

Exit mobile version