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

How to Rename Files and Directories in Linux

22 Июня 2020 | Терминал

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

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

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

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


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

mv Команда ( не хватает хода) используется для переименования или перемещения файлов из одного места в другое. Синтаксис 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 команды с разным синтаксисом. В этом уроке мы будем использовать версию команды Perl rename . Если у вас не установлена ​​эта версия в вашей системе, вы можете легко установить ее, используя менеджер пакетов вашего дистрибутива.

  • Установить 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/A-Z/a-z/' * 
  • Преобразовать имена файлов в верхний регистр

    rename 'y/a-z/A-Z/' * 


Вывод

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

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


    Комментарии

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

Загрузка комментариев...