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

Как переименовать файлы в Linux

Переименование файлов — одна из самых распространённых задач, часто выполняемых в системе Linux. Вы можете переименовать файлы с помощью графического файлового менеджера или через командную строку терминала.

Переименование одного файла — простая задача, но переименование нескольких файлов одновременно может стать проблемой, особенно для пользователей, впервые работающих с Linux.

В этом уроке мы покажем вам, как использовать команды mv и rename для переименования файлов и каталогов.

Переименование файлов с помощью команды mv

Команда mv (сокращение от move) используется для переименования или перемещения файлов из одного места в другое. Синтаксис команды mv следующий:

 mv [ OPTIONS ] source destination

source может быть один или несколько файлов или каталогов, а destination может быть один файл или каталог.

  • Если в качестве source указано несколько файлов, destination должен быть каталог. В этом случае source файлы будут перемещены в целевой каталог.
  • Если в качестве source указан один файл, а destination является существующий каталог, то файл перемещается в указанный каталог.
  • Чтобы переименовать файл, необходимо указать один файл в качестве source и один файл в качестве destination .

Например, чтобы переименовать файл file1.txt в file2.txt , необходимо выполнить:

 mv file1.txt file2.txt

Переименование нескольких файлов с помощью команды mv

Команда mv может переименовывать только один файл за раз, но ее можно использовать вместе с другими командами, такими как find , или внутри циклов bash for или while для переименования нескольких файлов.

В следующем примере показано, как использовать цикл Bash for для переименования всех файлов .html в текущем каталоге путем изменения расширения .html на .php .

 for f in *.html ; do mv -- " $f " " ${ f %.html } .php" done

Давайте проанализируем код построчно:

  • Первая строка создает цикл for и просматривает список всех файлов с расширением .html .
  • Вторая строка применяется к каждому элементу списка и перемещает файл в новый, заменяя .html на .php . Часть ${file%.html} использует расширение параметра оболочки для удаления части .html из имени файла.
  • done указывает на конец сегмента цикла.

Вот пример использования mv в сочетании с find для достижения того же, что и выше:

 find . -depth -name "*.html" -exec sh -c 'f="{}"; mv -- "$f" "${f%.html}.php"' ;

Команда find поочередно передаёт все файлы, заканчивающиеся на .html , в текущем каталоге в mv с помощью параметра -exec . Строка {} — это имя текущего обрабатываемого файла.

Как видно из приведенных выше примеров, переименование нескольких файлов с помощью команды mv — непростая задача, поскольку она требует хороших знаний Bash-скриптов.

Переименование файлов с помощью команды rename

Команда rename используется для переименования нескольких файлов. Эта команда более продвинутая, чем mv поскольку требует базовых знаний регулярных выражений.

Существуют две версии команды rename с разным синтаксисом. В этом руководстве мы будем использовать версию команды rename на Perl. Если эта версия не установлена в вашей системе, вы можете легко установить её с помощью менеджера пакетов вашего дистрибутива.

  • Установить rename в Ubuntu и Debian

     sudo apt install rename
  • Установка rename в CentOS и Fedora

     sudo yum install prename
  • Установить rename в Arch Linux

     yay perl-rename ## or yaourt -S perl-rename

Синтаксис команды rename следующий:

 rename [ OPTIONS ] perlexpr files

Команда rename переименует files в соответствии с заданным регулярным выражением perlexpr . Подробнее о регулярных выражениях perl можно узнать здесь .

Следующий пример изменит все файлы с расширением .html на .php :

 rename 's/.html/.php/' *.html

Вы можете использовать опцию -n , чтобы вывести имена файлов, которые нужно переименовать, не переименовывая их.

 rename -n 's/.html/.php/' *.html

Вывод будет выглядеть примерно так:

 rename(file-90.html, file-90.php) rename(file-91.html, file-91.php) rename(file-92.html, file-92.php) rename(file-93.html, file-93.php) rename(file-94.html, file-94.php)

По умолчанию команда rename не перезаписывает существующие файлы. Чтобы разрешить перезапись существующих файлов, укажите параметр -f :

 rename -f 's/.html/.php/' *.html

Ниже приведены еще несколько распространенных примеров использования команды rename :

  • Заменить пробелы в именах файлов на подчеркивания

     rename 'y/ /_/' *
  • Преобразовать имена файлов в строчные буквы

     rename 'y/AZ/az/' *
  • Преобразовать имена файлов в верхний регистр

     rename 'y/az/AZ/' *

Заключение

Мы показали вам, как использовать команды mv и rename для переименования файлов.

В Linux существуют и другие команды для переименования файлов, например, mmv . Новички в Linux, которых пугает командная строка, могут использовать инструменты пакетного переименования с графическим интерфейсом, например,Métamorphose .

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

переименовать mv- терминал

Связанные руководства

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *