
Переименование каталогов — одна из самых простых операций, часто выполняемых в системе 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 , или внутри циклов для одновременного переименования нескольких файлов.
Вот пример, показывающий, как использовать цикл 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 с разным синтаксисом. Мы будем использовать версию команды rename на Perl. Файлы переименовываются в соответствии с заданным регулярным выражением Perl .
В следующем примере показано, как заменить пробелы в именах всех каталогов в текущем рабочем каталоге на подчеркивания:
find . -mindepth 1 -prune -type d | rename 'y/ /_/'
Для большей безопасности передайте параметр -n команде rename , чтобы вывести имена каталогов, которые нужно переименовать, не переименовывая их.
Вот еще один пример, показывающий, как преобразовать имена каталогов в нижний регистр:
find . -mindepth 1 -prune -type d | rename 'y/AZ/az/'
Заключение
Мы показали вам, как использовать команды mv для переименования каталогов.
Если у вас есть вопросы или пожелания, не стесняйтесь оставлять комментарии.
Связанные руководства