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

Вы новичок в операционной системе Linux? Если да, то обычные задачи, такие как переименование файлов и папок, могут отличаться от того, к чему вы привыкли. Но не волнуйтесь. Концепция переименования файлов в Linux подобна тому, как это делается в других операционных системах.

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

Давайте начнем!

Необходимые условия

Чтобы следовать этому руководству, убедитесь, что у вас есть следующее:

  • В этом руководстве используется Ubuntu 18.04 LTS, но подойдут и другие дистрибутивы Linux.
  • Учетная запись с правами sudo/administrator.

Переименование файлов в Linux с помощью файлового менеджера

Если вы привыкли управлять файлами через графический интерфейс, начнем это руководство с переименования файлов с использованием файлового менеджера. Графические файловые менеджеры удобны тем, что вы можете видеть файлы наглядно. Один из таких файловых менеджеров, доступных в Linux, – это бывший файловый менеджер GNOME, Nautilus. В этом руководстве демонстрируется переименование файлов с использованием файлового менеджера Nautilus.

Другие файловые менеджеры Linux включают в себя Konqueror, Dolphin, Krusader, Thunar, файловый менеджер Nemo и файловый менеджер Sunflower . Эти файловые менеджеры выполняют те же задачи, но переименование файлов или каталогов может немного отличаться.

Запустите терминал, затем выполните следующую команду для установки Nautilus (install nautilus) с помощью менеджера пакетов apt, если у вас его еще нет на вашем компьютере. Команда sudo повышает уровень команды с правами sudo/administrator.

sudo apt install nautilus

Переименование одного файла

Переименование одного файла в Nautilus требует всего нескольких кликов, как в Windows File Explorer.

Для переименования одного файла откройте Nautilus, щелкните правой кнопкой мыши на файле, который вы хотите переименовать, и выберите Переименовать, как показано ниже.

Этот пример сосредоточен на переименовании файлов, но процесс тот же для переименования как файлов, так и каталогов.

Renaming a Single File

Теперь введите новое имя файла для замены оригинального имени файла, нажмите Enter или щелкните по кнопке Переименовать, и все готово.

Entering New File Name

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

Как и в Windows, Ubuntu дает вам больше возможностей по выбору того, как вы хотите переименовать несколько файлов сразу.

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

Renaming Multiple Files Using Nautilus.

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

  • Переименовать с использованием шаблона – Это позволяет переименовывать файлы с приращениями.
  • Найти и заменить текст – Позволяет находить и заменять определенные тексты в именах файлов.

Переименование файлов с использованием шаблона

Чтобы переименовать файлы с использованием шаблона, выберите опцию Переименовать с использованием шаблона.

Теперь введите заменяемое имя в пустое поле для переименования файлов с использованием шаблона и нажмите кнопку +Добавить и выберите из шаблонов. Для этого учебного пособия выберите первый (1,2,3,4) и нажмите Переименовать. Эта опция добавляет увеличивающиеся числа к каждому файлу после имени файла для замены (Текст1, Текст2,…).

Renaming Files using a Template

Заметьте, что имена файлов изменены на Text, с последующим увеличением номеров.

Verifying File Names Changed to “Text” with Incrementing Num

Поиск и замена слов в именах файлов

Чтобы переименовать несколько файлов с определенным именем файла, выберите опцию Поиск и замена текста.

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

Replacing Texts in File Names

Теперь вы видите, что вы заменили слово “Text” на “File” в каждом имени файла.

Verifying the word “Text” was replaced with the word “File” on Each File

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

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

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

# Переименовать файл или каталог в рабочем каталоге
mv <source> <destination>
# Переименовать файл, указав полный путь
mv <~/mydir/source> <~/mydir/destination>

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

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

Чтобы продемонстрировать, как переименовать один файл и каталог:

1. Запустите терминал, затем выполните набор команд ниже, чтобы создать каталог и два текстовых файла.

# Создайте каталог с именем 'test'
mkdir test 
# Смените каталог на ~/test
cd test 
# Создайте текстовые файлы с именами 'file1.txt' и 'file2.txt'
touch file1.txt file2.txt 

2. Затем выполните команду ls, чтобы перечислить файлы в рабочем каталоге. Ниже вы можете видеть, что file1.txt и file2.txt существуют в каталоге ~/test.

Listing Files in the Working Directory

3. Выполните одну из команд mv ниже, чтобы переименовать file1.txt в file10.txt.

# Переименуйте файл в рабочем каталоге
mv file1.txt file10.txt

# Переименуйте файл, указав полный путь
mv ~/test/file1.txt ~/test/file10.txt

Переименование каталога такое же, как и переименование файла, например: mv ~/test ~/demo. Символ ~ обозначает домашний каталог.

4. Наконец, повторно выполните команду ls, чтобы перечислить файлы в рабочем каталоге.

Ниже вы можете видеть, что file1.txt теперь переименован как file10.txt.

Confirming file1.txt is renamed as file10.txt

Переименование нескольких файлов с использованием цикла for

Если у вас слишком много дел и вы хотите переименовать все файлы сразу, вам нужно использовать оператор цикла for, как показано ниже.

Скопируйте код ниже как есть, вставьте его в ваш терминал и нажмите Enter. Этот код сканирует каждый текстовый файл в рабочем каталоге и переименовывает файлы с добавлением “File” и последующего увеличения числа.

# Объявляет переменную со значением 1
i=1 
# Сканирует каждый текстовый файл в рабочем каталоге
for file in *.txt; 
# Повторяет команду ниже до тех пор, пока все файлы не будут просканированы
do 
  # Переименовывает каждый файл с добавлением "File" и последующего увеличения числа ($i)
	mv -- "$file" "File$i.txt"
  # Увеличивает значение переменной на 1
  i=$((i+1)) 
done

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

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

Renaming Files with a For Loop

Переименование файлов в Linux с помощью утилиты rename

Если вы переименовываете один файл в своем ежедневном рутинном процессе, то команда mv будет достаточной. Но, возможно, вы хотите переименовать несколько файлов сразу с одинаковым шаблоном? Например, переименовать файлы, которые начинаются с определенного слова (файл). В таком случае установите утилиту rename вместо этого.

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

Чтобы установить утилиту rename, выполните одну из следующих команд в зависимости от дистрибутива Linux, на котором вы работаете.

# Установить утилиту rename с помощью менеджера пакетов apt для Ubuntu, Debian и Linux Mint
sudo apt install rename
# Установить утилиту rename с помощью менеджера пакетов dnf для CentOS, Fedora и Red Hat
sudo dnf install prename
# Установить утилиту rename с помощью менеджера пакетов pacman для Arch Linux / Manjaro Linux
sudo pacman -S perl-rename

Ниже приведена синтаксическая конструкция команды rename.

rename <options> <perlexpr> <files>

Переименование нескольких файлов

Учитывая синтаксис команды rename, теперь вы можете переименовывать файлы с одинаковым шаблоном. Замечательно в команде rename то, что вам не нужно объявлять функцию цикла для переименования нескольких файлов, как вы делали в разделе “Переименование нескольких файлов с помощью цикла For”.

Возможно, вам нужно переименовать файлы с определенными словами в них. Если это так, посмотрите на регулярное выражение Perl ('s/file/myfile/') в приведенной ниже образцовой команде. Регулярные выражения Perl определяют шаблон строки на основе языка программирования Perl.

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

rename -n 's/file/myfile/' *.txt
Listing Affected Files Before Renaming

Теперь запустите одну из команд rename, чтобы заменить слово file на myfile в названии каждого текстового файла в рабочем каталоге или каталоге ~/test/*.txt.

В выражении Perl ('s/file/myfile/') символ s обозначает замену, что означает, что вы переименовываете файлы. Обратите внимание, что к команде добавлена опция -v, чтобы вернуть, какие файлы были переименованы.

# Заменить 'file' на 'myfile' в названии каждого файла в рабочем каталоге
rename -v 's/file/myfile/' *.txt
# Заменить 'file' на 'myfile' в названии каждого файла в каталоге ~/test
rename -v 's/file/myfile/' ~/test/*.txt

Ниже вы можете видеть, что каждое слово “file” в текстовых файлах переименовано в “myfile”.

Renaming a Files with the rename Command

Если вы предпочитаете переименовать все файлы, удалите расширение файла, когда указываете путь к файлу, например, rename -v 's/file/myfile/' ~/test/*

Изменение расширений файлов

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

Запустите команду rename ниже, чтобы изменить расширение всех файлов (*) из .txt в .html в каталоге ~/test. Символ $ в выражении Perl соответствует концу строки (.txt) для каждого имени файла, поэтому команда изменяет только расширения файлов .txt. И, как и при переименовании нескольких файлов, добавьте опцию -v, чтобы перечислить каждое изменение, которое делает команда.

rename -v 's/.txt$/.html/' *.txt

Чтобы вместо этого удалить все расширения файлов, удалите строку замены в выражении Perl, например: rename -v 's/.txt$//' *.txt

Как видно на изображении ниже, расширения файлов .txt изменены на .html

Changing File Extensions from .txt to .html

Изменение регистра имен файлов на прописные и строчные

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

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

Выполните одну из команд rename ниже, чтобы изменить все имена файлов в текущем каталоге из строчных (a-z) в прописные (A-Z) и наоборот.

# Изменить имя файла с строчного на прописное
rename -v 'y/a-z/A-Z/' *
# Изменить имя файла с прописного на строчное
rename -v 'y/A-Z/a-z/' *

Ниже вы можете увидеть оба результата изменения регистра букв в имени файла.

Changing File Name from Lowercase to Uppercase and Vice Versa

Замена и удаление пробелов в именах файлов

Как и с регистром букв в имени файла, у вас может возникнуть проблема при поиске файлов, если в их именах есть пробелы. Давайте исправим это, заменив пробелы на символ или удалив пробелы полностью.

Выполните команду rename ниже, чтобы заменить пробелы во всех именах файлов на подчеркивание (_) в текущем каталоге. Поскольку подчеркивание является метасимволом, экранируйте его обратной косой чертой (\\_), чтобы объявить подчеркивание буквально. Метасимволы – это специальные символы с особым значением в компьютерной программе.

Обратите внимание на g в выражении Perl, который указывает команде заменить все совпадения (пробелы), а не только первое.

rename -v 's/ /\\_/g' *

Ниже вы можете видеть, что команда заменила все пробелы на подчеркивания.

Replacing spaces with underscores in a file name

Чтобы удалить все пробелы в имени файла, а не заменять их символами, выполните следующую команду.

В выражении Perl ниже звездочка после пробела (/ *) соответствует всем вхождениям пробелов в имени файла, а не только первому. Символ замены пустой (//), поэтому команда rename удаляет все (g) пробелы.

rename -v "s/ *//g" *

Теперь вы можете видеть, что из каждого имени файла удалены все пробелы.

Removing all spaces in filenames

Преобразование первой буквы каждого слова в имени файла в заглавную

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

В выражении Perl ниже совпадает любой одиночный символ (\\w) на границе слова (\\b), при условии, что этот символ не является точкой или апострофом (?<![.'\\'']). Затем команда rename переведет эту букву в верхний регистр (u$&).

rename -v 's/(?<![.'\\''])\\b\\w*/\\u$&/g' *

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

Capitalizing First Letter of Each Word in File Names

Заключение

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

Почему бы не изучить написание сценариев оболочки Linux и создать сценарий для автоматизации переименования файлов в Linux?

Source:
https://adamtheautomator.com/rename-files-in-linux/