Переименование каталогов является одной из самых основных операций, которые вам часто приходится выполнять в системе 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команды для переименования каталогов.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.