Переименование каталогов — одна из самых основных операций, которые вам часто приходится выполнять в системе Linux. Вы можете переименовывать каталоги из файлового менеджера графического интерфейса с помощью пары щелчков мышью или с помощью терминала командной строки.
В этой статье объясняется, как переименовывать каталоги с помощью командной строки.
Содержание
Переименование каталогов
В Linux и Unix-подобных операционных системах вы можете использовать команду mv
(сокращение от move) для переименования или перемещения файлов и каталогов из одного места в другое.
Синтаксис команды 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
добавления текущей даты к именам всех каталогов в текущем рабочем каталоге:
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
для переименования каталогов.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.