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