Android

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

Настя и сборник весёлых историй

Настя и сборник весёлых историй

Оглавление:

Anonim

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

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

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

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

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

mv source destination

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

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

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

mv file1.txt file2.txt

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

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

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

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

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

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

Мы также можем использовать команду mv в сочетании с find для достижения того же, что и выше.

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

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

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

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

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

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

  • Установите переименование в Ubuntu и Debian

    sudo apt install rename

    Установите переименование на CentOS и Fedora

    sudo yum install prename

    Установите переименование в Arch Linux

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

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

rename 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)

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

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

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

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

    rename 'y/ /_/' *

    Преобразование имен файлов в нижний регистр

    rename 'y/AZ/az/' *

    Преобразовать имена файлов в верхний регистр

    rename 'y/az/AZ/' *

Вывод

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

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