ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)
Понедельник, 31 марта, 2025
Сегодня у нас 1 праздник:
Международный День Резервного Копирования (World Backup Day). Пользователи сайта социальных новостей reddit предложили сделать дату 31.03 Международным днём резервного копирования, аргументируя это тем, что никогда заранее нельзя узнать, какие сюрпризы преподнесёт 1.04

Как переименовать каталоги в Linux

Как переименовать каталоги в Linux

Переименование каталогов является одной из самых основных операций, которые вам часто приходится выполнять в системе Linux. Вы можете переименовать каталоги из файлового менеджера GUI с помощью пары кликов или с помощью терминала командной строки.

В этой статье объясняется, как переименовать каталоги с помощью командной строки.

 

Переименование каталогов

В Linux и Unix-подобных операционных системах вы можете использовать команду mv (без перемещения) для переименования или перемещения файлов и каталогов из одного места в другое.

Синтаксис команды mv для перемещения каталогов следующий:

mv [OPTIONS] source destination

Например, чтобы переименовать каталог dir1 в dir2, вы запустите:

mv dir1 dir2

 

При переименовании каталогов вы должны указать в mvкоманде ровно два аргумента. Первый аргумент — это текущее имя каталога, а второй — новое имя.

Важно отметить, что, если каталог dir2 уже существует, то каталог dir1 перемещается в dir2.

Чтобы переименовать каталог, который не находится в текущем рабочем каталоге, вам нужно указать абсолютный или относительный путь:

mv /home/user/dir1 /home/user/dir2

 

Переименование нескольких каталогов

Переименование одного каталога — простая задача, но переименование нескольких каталогов одновременно может быть проблемой, особенно для новых пользователей Linux.

Переименование нескольких каталогов одновременно редко требуется.

 

Переименование нескольких каталогов с помощью mv

Команда mv может переименовывать только один файл за раз. Однако его можно использовать вместе с другими командами, такими как команда find или внутри циклов, для переименования нескольких файлов одновременно.

Вот пример, показывающий, как использовать цикл for в Bash для добавления текущей даты к именам всех каталогов в текущем рабочем каталоге:

for d in *; do 
  if [ -d "$d" ]; then
    mv -- "$d" "${d}_$(date +%Y%m%d)"
  fi
done

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

Вот решение той же задачи с использованием mv в сочетании с find:

find . -mindepth 1 -prune -type d -exec sh -c 'd="{}"; mv -- "$d" "${d}_$(date +%Y%m%d)"' \;

Команда find передает все каталоги mv один за другим, используя опцию -exec. Строка {} — это имя каталога, обрабатываемого в данный момент.

Как видно из примеров, переименование нескольких каталогов с помощью mv не является легкой задачей, так как требует хорошего знания сценариев Bash.

 

Переименование нескольких каталогов с помощью rename

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

Существует две версии команды rename с разным синтаксисом. Мы будем использовать версию команды Perl rename. Файлы переименовываются в соответствии с заданным регулярным выражением perl.

В следующем примере показано, как заменить пробелы в именах всех каталогов в текущем рабочем каталоге на подчеркивания:

find . -mindepth 1 -prune -type d | rename 'y/ /_/'

 

Чтобы быть в безопасности, передайте опцию -n, чтобы rename печатала имена каталогов, которые будут переименованы, не переименовывая их.

Вот еще один пример, показывающий, как преобразовать имена каталогов в нижний регистр:

find . -mindepth 1 -prune -type d | rename 'y/A-Z/a-z/'

 

Вывод

Мы показали вам, как использовать mvкоманды для переименования каталогов.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Exit mobile version