Переименовать один каталог в Linux просто и легко.
В то время как для работы с несколькими каталогами нам необходимо использовать специальные команды, скрипты или комбинацию различных команд.
В этом руководстве мы узнаем, как переименовать сразу несколько каталогов в Linux.
Переименование каталогов с помощью команды rename
Команда rename в основном используется для переименования нескольких файлов с помощью регулярных выражений.
Мы также можем использовать ее для одновременного переименования нескольких каталогов.
Утилита rename не установлена по умолчанию в большинстве дистрибутивов Linux.
Она легко доступна в стандартных репозиториях ОС и может быть легко установлена с помощью менеджера пакетов.
Примечание: в дистрибутивах на базе RHEL команда rename известна как prename.
Синтаксис:
rename 's/old-dir-name/new-dir-name/' old-dir-name*
Это переименует все каталоги в текущем каталоге, начиная с имени old-directory, в new-dir-name.
Например, чтобы переименовать каталоги с именами dir1, dir2 и dir3 в newdir1, newdir2 и newdir3 соответственно, введите:
rename -v 's/dir/newdir/' dir?
Все каталоги с именем dir изменяются на newdir с помощью команды rename.
Примечание: Команда rename не запрашивает подтверждения перед внесением изменений, поэтому будьте осторожны при выполнении этой команды.
Я бы рекомендовал сначала использовать опцию -n, чтобы выполнить пробный запуск, который покажет вам изменения, которые будут сделаны, не делая их на самом деле.
Использование скрипта
Давайте рассмотрим несколько примеров использования скриптов для массового переименования каталогов.
Здесь я буду использовать два скрипта на bash.
Пример 1:
Давайте воспользуемся циклом for для переименования нескольких каталогов путем поиска каталогов в текущем каталоге, а затем переименуем их с помощью команды mv:
#!/bin/bash
old_string="dir"
new_string="newdir"
for dir in *; do
if [ -d "$dir" ]; then
new_dirname="${dir//$old_string/$new_string}"
mv -v "$dir" "$new_dirname"
fi
done
Запустите bash скрипт:
bash rename-newdir-loop.sh
Мы использовали цикл for для перебора текущей директории и проверки, является ли каждый объект директорией.
Если это каталог, то используйте команду mv для переименования каталога.
Пример 2:
Используем следующий скрипт для поиска всех каталогов в текущем каталоге с именем ‘dir’ и переименования их в ‘newdir’ с помощью команды rename.
#!/bin/bash
dirs=$(find . -type d -name '*dir*')
rename 's/dir/newdir/g' $dirs
Запустите скрипт , введите:
bash dirs-rename.sh
Здесь мы использовали команду find для поиска каталогов с именем dir в текущем каталоге.
Затем использовали команду rename для замены всех вхождений этого имени на имя newdir.
Поиск и переименование каталогов
Давайте проверим, как использовать команду find для поиска каталогов и их переименования. Для иллюстрации я привел несколько примеров.
01. Поиск и переименование каталогов с помощью команды rename
Чтобы найти все каталоги в текущем каталоге и его подкаталогах с именем dir и переименовать их в testdir, введите:
find . -type d -name '*' | rename 's\dir\newdir\'
Здесь мы использовали команду find с командой rename для переименования нескольких каталогов.
02. Поиск и переименование каталогов с помощью команды mv
В следующем примере сначала используется команда find для поиска всех каталогов в текущем каталоге и его подкаталогах, имена которых содержат строку “dir”.
Затем используется флаг exec в команде mv для переименования каталогов, заменяя ‘dir’ на ‘testdir’ с помощью команды sed.
find . -type d -name '*dir*' -exec bash -c 'mv "$1" "$(echo "$1" | sed "s/dir*/testdir/g")"' _ {} \;
find . -type d -name 'dir*' -exec mv {} {}.abc \;
find . -type d -regex '.*/dir.*' -exec mv {} {}testdir \;
Заключение
В этом уроке мы узнали, как переименовывать каталоги в Linux из командной строки в массовом порядке.
Мы использовали команду rename, сценарий bash и find с помощью mv.
Вы можете использовать команду mmv с опцией -r, которая будет рекурсивно переименовывать файлы и каталоги. Помните, что это относится как к файлам, так и к каталогам, поэтому будьте осторожны.
Спасибо за прочтение, пожалуйста, оставляйте свои предложения и отзывы в разделе комментариев ниже.
см. также:
- ♎ Как переименовать имя столбца в базе данных SQL Server
- 🇵🇫 Как переименовать файлы в Linux
- Как переименовать локальную и удаленную Git ветку
- Как переименовать несколько файлов сразу в Linux
- Как назвать или переименовать контейнеры Docker
- 🐧 Как изменить или переименовать точку монтирования на Linux
- Как назвать или переименовать контейнеры Docker
- 🐧 Команда mv на Linux с полезными примерами
- 🐧 [Bash советы] Переименование файлов без ввода полного имени дважды в Linux