Как переименовать каталоги в Linux

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

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Оставьте комментарий