- Как переименовать файл Linux
- Как переименовать файл в Linux с помощью mv
- Переименование файлов Linux с помощью rename
- Переименование файлов в pyRenamer
- Выводы
- Команда rename
- Установка
- Синтаксис
- Опции
- Использование команды rename в Linux
- Переименование всех файлов в каталоге
- Замена дефиса на подчёркивание
- Удаление нежелательных символов
- Будущий результат
- Заключение
- Переименование группы файлов linux
Как переименовать файл Linux
Переименование файла linux — очень простая операция, но для новичков в Linux эта задача может оказаться сложной. Также здесь есть несколько нюансов и возможностей, которые желательно знать уже опытным пользователям, например, массовое переименование. В графическом интерфейсе все делается очень просто, но настоящую гибкость дает терминал.
В этой статье мы рассмотрим как переименовать файл в Linux с помощью терминала, рассмотрим такие возможности, как массовое пакетное переименование файлов, а также регулярные выражения.
Как переименовать файл в Linux с помощью mv
В Linux существует замечательная стандартная утилита mv, которая предназначена для перемещения файлов. Но по своей сути перемещение — это то же самое, что и переименование файла linux, если выполняется в одной папке. Давайте сначала рассмотрим синтаксис этой команды:
$ mv опции файл-источник файл-приемник
Теперь рассмотрим основные опции утилиты, которые могут вам понадобиться:
- -f — заменять файл, если он уже существует;
- -i — спрашивать, нужно ли заменять существующие файлы;
- -n — не заменять существующие файлы;
- -u — заменять файл только если он был изменен;
- -v — вывести список обработанных файлов;
Чтобы переименовать файл linux достаточно вызвать утилиту без дополнительных опций. Просто передав ей имя нужного файла и новое имя:
Как видите, файл был переименован. Вы также можете использовать полный путь к файлу или переместить его в другую папку:
mv /home/sergiy/test/newfile /home/sergiy/test/file1
Обратите внимание, что у вас должны быть права на запись в ту папку, в которой вы собираетесь переименовывать файлы. Если папка принадлежит другому пользователю, возможно, нужно будет запускать программу через sudo. Но в таком случае лучше запускать с опцией -i, чтобы случайно ничего не удалить.
Переименование файлов Linux с помощью rename
В Linux есть еще одна команда, которая позволяет переименовать файл. Это rename. Она специально разработана для этой задачи, поэтому поддерживает такие вещи, как массовое переименование файлов linux и использование регулярных выражений. Синтаксис утилиты тоже сложнее:
$ rename опции ‘s/ старое_имя / новое_имя ‘ файлы
$ rename опции старое_имя новое_имя файлы
В качестве старого имени указывается регулярное выражение или часть имени которую нужно изменить, новое имя указывает на что нужно заменить. Файлы — те, которые нужно обработать, для выбора файлов можно использовать символы подставки, такие как * или ?.
- -v — вывести список обработанных файлов;
- -n — тестовый режим, на самом деле никакие действия выполнены не будут;
- -f — принудительно перезаписывать существующие файлы;
Например, переименуем все htm файлы из текущей папки в .html:
Символ звездочки означает, что переименование файлов linux будет выполнено для всех файлов в папке. В регулярных выражениях могут применяться дополнительные модификаторы:
- g (Global) — применять ко всем найденным вхождениям;
- i (Case Censitive) — не учитывать регистр.
Модификаторы размещаются в конце регулярного выражения, перед закрывающей кавычкой. Перед тем, как использовать такую конструкцию, желательно ее проверить, чтобы убедиться, что вы не допустили нигде ошибок, тут на помощь приходит опция -n. Заменим все вхождения DSC на photo в именах наших фотографий:
rename -n ‘s/DSC/photo/gi’ *.jpeg
Будут обработаны DSC, DsC и даже dsc, все варианты. Поскольку использовалась опция -n, то утилита только выведет имена изображений, которые будут изменены.
Можно использовать не только обычную замену, но и полноценные регулярные выражения чтобы выполнить пакетное переименование файлов linux, например, переделаем все имена в нижний регистр:
Из этого примера мы видим, что даже если такой файл уже существует, то он перезаписан по умолчанию не будет. Не забывайте использовать опцию -n чтобы ничего случайно не повредить.
Переименование файлов в pyRenamer
Если вы не любите использовать терминал, но вам нужно массовое переименование файлов Linux, то вам понравится утилита pyrenamer. Это графическая программа и все действия здесь выполняются в несколько щелчков мыши. Вы можете установить ее из официальных репозиториев:
sudo apt install pyrenamer
В окне программы вы можете видеть дерево файловой системы, центральную часть окна, где отображаются файлы, которые будут изменены, а также панель для указания параметров переименования.
Вы можете удалять или добавлять символы, переводить регистр, автоматически удалять пробелы и подчеркивания. У программы есть подсказки, чтобы сделать ее еще проще:
Опытным пользователям понравится возможность pyRenamer для переименования мультимедийных файлов из их метаданных. Кроме того, вы можете переименовать один файл если это нужно. Эта утилита полностью реализует функциональность mv и remove в графическом интерфейсе.
Выводы
В этой статье мы рассмотрели как переименовать файл в консоли linux. Конечно, есть и другие способы, например, написать скрипт, или использовать файловые менеджеры. А как вы выполняете сложные операции по переименованию? Напишите в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Команда rename
Команду rename в Linux целесообразно использовать при групповом переименовании файлов или замены определённых символов или частей имени файла.
Установка
Если команда rename изначально не установлена в вашем дистрибутиве, то её можно будет достаточно просто установить.
В Arch Linux нет необходимости в установке этой утилиты, так как она входит в пакет util-linux .
Синтаксис
Опции
-v, —verbose Объяснить производимые действия -s, —symlink Переименовывать цели символьных ссылок -n, —no-act Не вносить никаких изменений -a, —all Заменить все вхождения -l, —last Заменить только последнее вхождение -o, —no-overwrite Не перезаписывать существующие файлы -i, —interactive Запрос перед перезаписью -h, —help Вывести справку -V, —version Вывести версию
Использование команды rename в Linux
Переименование всех файлов в каталоге
Для примера воспользуется каталогом Directory :
oleg@mobile:~/Directory:$ ls -l итого 20 -rw-r--r-- 1 oleg users 330 янв 30 14:51 example.txt -rw-r--r-- 1 oleg users 806 сен 10 2022 usa-capitals-ru.txt -rw-r--r-- 1 oleg users 1706 сен 10 2022 usa-states-capitals.txt -rw-r--r-- 1 oleg users 1136 сен 10 2022 usa-states-ru.txt -rw-r--r-- 1 oleg users 469 сен 30 2022 usa-states.txt oleg@mobile:~/Directory:$
Переименуем в каталоге все файлы, заменив суффиксы файлов с .txt на .tx :
oleg@mobile:~/Directory:$ rename .txt .tx *.txt oleg@mobile:~/Directory:$
oleg@mobile:~/Directory:$ ls -l итого 20 -rw-r--r-- 1 oleg users 330 янв 30 14:51 example.tx -rw-r--r-- 1 oleg users 806 сен 10 2022 usa-capitals-ru.tx -rw-r--r-- 1 oleg users 1706 сен 10 2022 usa-states-capitals.tx -rw-r--r-- 1 oleg users 1136 сен 10 2022 usa-states-ru.tx -rw-r--r-- 1 oleg users 469 сен 30 2022 usa-states.tx oleg@mobile:~/Directory:$
Замена дефиса на подчёркивание
Некоторые имена файлов имеют более одного дефиса. Запустим утилиту с опцией -a , так как без неё будет изменено лишь первое вхождение:
oleg@mobile:~/Directory:$ rename -a '-' '_' *.tx oleg@mobile:~/Directory:$
Во втором примере я использовал кавычки, а в первом не использовал. Я этим хотел показать лишь то, что команда работала и без них.
oleg@mobile:~/Directory:$ ls -l итого 20 -rw-r--r-- 1 oleg users 330 янв 30 14:51 example.tx -rw-r--r-- 1 oleg users 806 сен 10 2022 usa_capitals_ru.tx -rw-r--r-- 1 oleg users 1706 сен 10 2022 usa_states_capitals.tx -rw-r--r-- 1 oleg users 1136 сен 10 2022 usa_states_ru.tx -rw-r--r-- 1 oleg users 469 сен 30 2022 usa_states.tx oleg@mobile:~/Directory:$
Удаление нежелательных символов
В этом примере я специально добавил в те же файлы пробелы перед символом подчёркивания:
oleg@mobile:~/Directory:$ ls -l итого 20 -rw-r--r-- 1 oleg users 330 янв 30 14:51 example.tx -rw-r--r-- 1 oleg users 806 сен 10 2022 'usa _capitals _ru.tx' -rw-r--r-- 1 oleg users 1706 сен 10 2022 'usa _states _capitals.tx' -rw-r--r-- 1 oleg users 1136 сен 10 2022 'usa _states _ru.tx' -rw-r--r-- 1 oleg users 469 сен 30 2022 'usa _states.tx' oleg@mobile:~/Directory:$
В именах файлов операционной системы Linux использование символа пробела крайне нежелательно.
oleg@mobile:~/Directory:$ rename -a ' _' '_' * oleg@mobile:~/Directory:$
oleg@mobile:~/Directory:$ ls -l итого 20 -rw-r--r-- 1 oleg users 330 янв 30 14:51 example.tx -rw-r--r-- 1 oleg users 806 сен 10 2022 usa_capitals_ru.tx -rw-r--r-- 1 oleg users 1706 сен 10 2022 usa_states_capitals.tx -rw-r--r-- 1 oleg users 1136 сен 10 2022 usa_states_ru.tx -rw-r--r-- 1 oleg users 469 сен 30 2022 usa_states.tx oleg@mobile:~/Directory:$
Будущий результат
Во избежание ошибок при переименовании файлов можно до начала переименования проверить будущий результат. Для этого утилита используется с опцией -n , не позволяющей произвести переименование, и опцией -v , показывающей процесс.
Для примера проверим результат преобразования в именах файлов подчёркивания в дефис:
oleg@mobile:~/Directory:$ rename -anv '_' '-' *.tx oleg@mobile:~/Directory:$ rename -anv '_' '-' *.tx `usa_capitals_ru.tx' -> `usa-capitals-ru.tx' `usa_states_capitals.tx' -> `usa-states-capitals.tx' `usa_states_ru.tx' -> `usa-states-ru.tx' `usa_states.tx' -> `usa-states.tx' oleg@mobile:~/Directory:$
В имена файлов не было внесено никаких изменений:
oleg@mobile:~/Directory:$ ls -l итого 20 -rw-r--r-- 1 oleg users 330 янв 30 14:51 example.tx -rw-r--r-- 1 oleg users 806 сен 10 2022 usa_capitals_ru.tx -rw-r--r-- 1 oleg users 1706 сен 10 2022 usa_states_capitals.tx -rw-r--r-- 1 oleg users 1136 сен 10 2022 usa_states_ru.tx -rw-r--r-- 1 oleg users 469 сен 30 2022 usa_states.tx oleg@mobile:~/Directory:$
Заключение
Приведённые несколько примеров использования в Linux команды rename показывают насколько она полезна. Применение этой утилиты в работе не будет представлять никаких сложностей для начинающего системного администратора.
Переименование группы файлов linux
Итак, у нас есть куча файлов, среди которых надо навести порядок. Для этого сделаем групповое переименование.
Утилита rename входит в стандартную поставку Debian, так что начнем с нее.
rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]
-v отобразить имена успешно переименованных файлов.
-n отобразить список файлов, которые будут переименованы, без переименования в итерации.
-f перезаписать уже существующие файлы.
perlexpr — шаблон для переименования.
Для того, чтобы выполнить переименование файлов согласно условию, выполним команду:
Рассмотрим perlexr подробнее:
s=указывает, что требуется замещение.
/.sh/=Строка, которую будем замещать.
/.sh.bak/ = строка, на которую будем замещать
g=global, будем замещать все найденные вхождения.
С помощью rename можно быстро изменить регистр файлов. Например поднимем регистр файлов из примера:
mmv — программа для массового перемещения, переименования, копирования, объединения файлов.
По умолчанию она не включена в состав Debian. Поставим ее:
Наша задача решается одной строкой:
Теперь решим нашу задачу стандартной командой mv. Для этого нам прийдется немного попрограммировать в bash.
for i in *.sh;
do mv $i `basename $i sh`sh.bak;
done
Попробуем усложить задачу. Например у нас есть куча файлов JPG:
1234234.jpg
e456567657.jpg
234df34.jpg
…
Мы хотим привести их к следующему виду:
file1.jpg
file2.jpg
file3.jpg
…
j=0;
for i in *.jpg;
do let j+=1;
mv $i file$j.jpg ;
done
В любимом многими mc, процесс переименования по маске выполняется просто и непринужденно в два действия.
1. Через + выбираем файлы по маске *.sh
2. Нажимаем F6 и в destination указываем *.sh.bak
Все примеры, приведенные выше, так или иначе работают во всех Linux, BSD, Mac OS, если стоят соответствующие утилиты.