Перейти к содержимому

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

  • автор:

Массовое переименование файлов в Linux.

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

Offtop. Переименовать один файл в Linux: mv имя-файла1 имя-файла2

Итак, допустим у нас есть несколько файлов:

myapp.conf myapp.txt myapp.sh whatis.sh 

Файлы sh мы хотим переименовать в sh.bak. Рассмотрим варианты:

Rename

Утилита rename входит в стандартную поставку Debian, так что начнем с нее.

rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]

-v отобразить имена успешно переименованных файлов.

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

-f перезаписать уже существующие файлы.

perlexpr — шаблон для переименования.

Для того, чтобы выполнить переименование файлов согласно условию, выполним команду:

rename  

Рассмотрим perlexr подробнее:

s=указывает, что требуется замещение.

/.sh/=Строка, которую будем замещать.

/.sh.bak/ = строка, на которую будем замещать

g=global, будем замещать все найденные вхождения.

С помощью rename можно быстро изменить регистр файлов. Например поднимем регистр файлов из примера:

rename ‘y/a-z/A-Z/’ * 

MMV

mmv — программа для массового перемещения, переименования, копирования, объединения файлов.

По умолчанию она не включена в состав Debian. Поставим ее:

sudo apt-get install mmv 

Наша задача решается одной строкой:

MV

Теперь решим нашу задачу стандартной командой mv. Для этого нам прийдется немного попрограммировать в bash.

Попробуем усложить задачу. Например у нас есть куча файлов JPG:

1234234.jpg e456567657.jpg 234df34.jpg … 

Мы хотим привести их к следующему виду:

file1.jpg file2.jpg file3.jpg … 

Midnight Commander

В любимом многими mc, процесс переименования по маске выполняется просто и непринужденно в два действия.

  1. Через + выбираем файлы по маске *.sh
  2. Нажимаем F6 и в destination указываем *.sh.bak

Все примеры, приведенные выше, так или иначе работают во всех Linux, BSD, Mac OS, если стоят соответствующие утилиты.

На этом все, спасибо за внимание.

Смотрите также
  • maybe? Интересная песочница для отладки операций с файлами в скриптах Linux.
  • Знакомство с CMake. Часть 1. Установка, CMakeLists.txt, сборка.
  • Упрощаем администрирование с etckeeper. Настройка контроля версий конфигов в /etc.
  • HTTPS для сайта на WordPress под управлением nginx.
  • Тестирование производительности веб серверов. Часть первая. Apache Benchmark (ab).
  • ← Предыдущий
  • Следующий →

Как сделать массовое переименование файлов в директории?

Здравствуйте всем! У меня снова появился один из легчайших вопросов, над которым я ломаю голову целые сутки. У меня тут появилось задание сделать скрипт, который переименует файлы в определенной директории :
File1
.
File5
В например :
File1_renamed
.
File5_renamed
Я знаю что это можно сделать через suffix , но в том и загвоздка, что как пример мне дано простое переименование файлов с добавлением этого renamed, и надо сделать именно так. Я подумывал вывести список файлов и переименовать их так, но что-то даже представления не имею как это сделать, чтобы изменения повлияли на названия самих файлов в директории, а не просто как вывод в консоль.

  • Вопрос задан более трёх лет назад
  • 635 просмотров

8 комментариев

Простой 8 комментариев

AmdInDrive @AmdInDrive Автор вопроса
AVKor, man mv и так понятно что -S, но как это сделать для нескольких файлов в указанной директории?

У файлов расширения будут?

но как это сделать для нескольких файлов

Через цикл for например

появилось задание

Задания, кстати, тут нельзя выкладывать.
AmdInDrive @AmdInDrive Автор вопроса

Steven Konrov, нет, у них нет расширения. Цикл for , это указать все файлы которые хочу переименовать? Видимо правила я недочитал, но надеюсь тогда сделают поблажку, что это не полноценное задание, а часть его, которую я просто не понимаю, связанную с чем-то определенным.

AmdInDrive @AmdInDrive Автор вопроса

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

AmdInDrive,
for file in *; do echo "$_renamed"; done
Эхо меняем на mv, и один аргумент переделываем на два.

for file in *; do mv "$file" "$_renamed"; done

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

Да что вы, ещё как подходит. Только вопросы по другому надо задавать))
AmdInDrive @AmdInDrive Автор вопроса
Steven Konrov, ваш ответ один из самых лучших, спасибо, теперь все понятно.
AmdInDrive @AmdInDrive Автор вопроса
Steven Konrov, и если не сложно, продублируйте в ответе, чтобы я отметил как решение.
Решения вопроса 1

shambler81

Виктор Таран @shambler81 Куратор тега Linux

find /var/www/ -type f -exec mv <> <>_renamed \;

find -рекурсивный поиск от заданного каталога и ниже
/var/www - где искать, если в текущем каталоге то можно заменить на .
-type f - только файлы
-exec выполнить с найденным
mv переместить
<> то что найдено в данном случае имя файла
\; - просто закончит команду.
Проверить можно так, вместо переименовывания вы получите просто принт самих команд.

find /var/www/ -type f -exec echo <> <>_renamed \;

5fb18a8d63453365594996.png

Отметить решенным, спасибо кэп.

Ответ написан более трёх лет назад
Комментировать
Нравится 2 Комментировать
Ответы на вопрос 3

Rsa97

Для правильного вопроса надо знать половину ответа
rename -e 's/(.*)/$1_renamed/' *
Ответ написан более трёх лет назад
Нравится 2 1 комментарий
AmdInDrive @AmdInDrive Автор вопроса
Спасибо за ответ, учту на будущее ваш вариант решения.

xotkot

хорошо есть и хорошо весьма

есть много способов как переименовать, вот нагугленные примеры Переименование файлов с помощью find, sed и xargs
конкретно в вашем случае можно сделать так:

ls -1 |awk '' | xargs -n2 mv

с пробелами в названии

ls -1 |awk '' | xargs -n2 mv

Ответ написан более трёх лет назад
Нравится 1 2 комментария
AmdInDrive @AmdInDrive Автор вопроса
Спасибо за ваш ответ, думаю стоит его разобрать на будущее, а пока сделаю попроще.

xotkot

AmdInDrive, тут ничего сложного
создадим директорию и тестовые файлы в ней
mkdir testdir && cd testdir && touch "File "
здесь мы усложнили и сделали название через пробел(File 1)

вывести список файлов текущей директории по одному на строку
ls -1
File 1
File 2
File 3

выведем имена файлов и их изменённых названий:
awk ''
File 1 File 1_renamed
File 2 File 2_renamed
File 3 File 3_renamed
awk - утилита для обработки текста, здесь берём текущую строку($0) и через пробел прописываем её же но с добавкой($0"_renamed")
но так как в названии файла может быть пробел что впоследствии может вызвать казус при обработке, то лучше предохранится и закавычить входящее и исходящее название файлов
awk ''
"File 1" "File 1_renamed"
"File 2" "File 2_renamed"
"File 3" "File 3_renamed"

переместить/переименовать(mv) файлы из первого столбца во второй
xargs -n2 mv

смотрим результат до фактического переименования, ключ -p в команде xargs

ls -1 |awk '' | xargs -p -n2 mv

mv 'File 1' 'File 1_renamed' .
mv 'File 2' 'File 2_renamed' .
mv 'File 3' 'File 3_renamed' .

ок, всё нормально, выполняем убрав ключ -p

ls -1 |awk '' | xargs -n2 mv

смотрим результат
ls -1
File 1_renamed
File 2_renamed
File 3_renamed

в итоге зная одну из утилит обработки текста awk/sed можно очень легко и гибко переименовывать файлы любой сложности

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

Переименовываем файл в Linux

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

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

С помощью файлового менеджера

Файловый менеджер операционной системы Linux очень прост в плане графического интерфейса – все элементы четко упорядочены, ничего лишнего. А переименовать через него какой-либо файл можно следующим образом.

  1. Открываю приложение и перехожу к папке, в которой расположен нужный файл.
  2. Навожу курсор на иконку и нажимаю по ней правой кнопкой мыши для вызова контекстного меню. В небольшом списке элементов нахожу пункт «Переименовать» и жму по нему. Или просто использую клавишу F2, но перед этим предварительно кликнув по файлу.

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

Самый простой и быстрый способ переименовать что-либо – воспользоваться файловым менеджером

Строка для переименования файла в Линукс

Ввожу будущее название файла и кликаю по зеленой кнопке

С помощью терминала

Если переименовать файл вышеуказанным способом не получается (нет доступа или что-то иное), стоит попробовать задействовать Терминал. Это аналог командной строки в ОС Windows, причем и выглядит схоже, только в Linux она используется куда чаще.

Открыть данную утилиту можно двумя способами – нажать на комбинацию клавиш Ctrl + Alt + T или выбрать соответствующую иконку в списке приложений, в папке «Утилиты».

Как открыть утилиту «Терминал» в Linux

«Терминал» можно найти в списке установленных приложений

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

Команда mv

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

Чтобы переименование файла прошло успешно, для начала в «Терминале» потребуется открыть папку, в которой располагается файл. Даю запрос, у меня он выглядит следующим образом:

«cd /home/ayko/Изображения».

У команды mv есть одна опция «-v» – она показывает все файлы в виде списка. А вот чтобы переименовать один из них, стоит ввести следующую команду:

mv -v «Снимок.png» «Image.png»

Да-да, про форматы файлов тоже забывать не стоит.

Переименование файла через «Терминал» и команду mv в Linux

Для начала надо открыть папку, и только потом начать переименование – логично, правда? ��

Проверяю, получилось ли, и обнаруживаю переименованный файл в папке.

Файл, переименованный через «Терминал» в Linux

Результат проделанной работы – файл успешно переименован

Так как команда -v отвечает за перемещение, то во время переименования можно воспользоваться ее прямым назначением. Приведу пример – перемещу файл из папки «Изображения» в «Документы», попутно проведу процедуру переименования. И в таком случае запрос будет выглядеть следующим образом: mv -v /home/ayko/Изображения/»Снимок.png» /home/ayko/Документы/»Image.png»

Переименование и перемещение файла в другой директории

И переименовали файл, и переместили его в другую папку

Команда rename

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

Но есть одно НО – она может быть изначально не установлена в системе, поэтому в таком случае потребуется ввести команду «sudo apt install rename». Я так и сделала, после этого последовало скачивание данных из сети, установка, и все это отображалось в окне «Терминала».

Если что-то не работает, для начала надо это что-то установить

Если что-то не работает, для начала надо это что-то установить

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

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

Вот эти файлы я собираюсь переименовывать

Запускаю утилиту «Терминал» и открываю запрос, ранее указанный мной для открытия папки – «cd /home/ayko/Изображения».

В этой директории во всех изображениях мне надо поменять слово «Снимок» на «Image». Для этого я выдаю следующий запрос:

rename -v ‘s/Снимок/Image/’ *

Переименование группы файлов через «Терминал» и команду «rename» в Linux

Открыла папку, ввела команду, а дальше утилита все переименовала так, как нужно

pyRenamer и GPRename

К сожалению, для версии, в которой я работаю, а именно Ubuntu 2019 года, эти программы не оптимизированы. То есть, я не найду репака даже на официальных сайтах, что уже говорить о «Менеджере приложений». Приводить примеры я буду в Ubuntu 16.04 – как понятно из названия, это версия выпуска апреля 2016 года. Вполне допустимо, что в других версиях сборки обе программы будут, но основную информацию я все же укажу.

Открываю менеджер приложений, ввожу запрос «pyRenamer», после чего устанавливаю программу.

Как установить pyRenamer в Ubuntu

Устанавливаю утилиту из «Менеджера приложений»

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

Иконка приложения в боковой панели Ubuntu

Вот так выглядит в боковой панели иконка приложения

Слева в окне отображается дерево файловой системы, а в центральной части – файлы, расположенные в выбранной папке. Ниже уже – панели управления, в которой и проводится настройка. Мне понадобится перейти во вкладку «Images», так как я переименовываю именно изображения. Ввожу во вторую строку будущее имя файла, нажимаю на кнопку «Preview». Рядом с прежним названием появится пример нового, и уже в итоге я жму на кнопку «Rename».

Как переименовать файл через приложение pyRenamer в Linux

Перехожу ко вкладке «Images», ввожу будущее название файла и завершаю процедуру

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

рограмма GPRename в ОС Linux

Вот так выглядит окно программы GPRename

Заключение

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

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

mv rename linux

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

Переименование командой mv

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

Синтаксис команды mv очень простой:

mv опции источник назначение

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

Основные опции:
-f — перезаписывать существующие файлы.
-n — не перезаписывать существующие файлы.
-i — выдавать запрос на перезапись существующих файлов.
-u — не перемещать файлы, которые уже существуют, если существующие файлы новее (время модификации новее).
-v — выводить имя каждого файла перед его переносом.

Как задавать имена файлов и директорий для переименования:

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

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

Переименование файла myfile1.dat в файл myfile2.dat:

mv myfile1.dat myfile2.dat

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

mv /home/pingvinus/myfile1.dat /home/pingvinus/myfile2.dat

Переименование директории

Переименование директории /home/pingvinus/mydir1 в директорию /home/pingvinus/mydir2 . Справедливо, если /home/pingvinus/mydir2 не существует.

mv /home/pingvinus/mydir1 /home/pingvinus/mydir2

Если /home/pingvinus/mydir2 существует, то, выполнив команду:

mv /home/pingvinus/mydir1 /home/pingvinus/mydir2

директория mydir1 будет перемещена внутрь директории /home/pingvinus/mydir2 . То есть mydir1 будет в результате находиться по адресу /home/pingvinus/mydir2/mydir1 .

Переименование и перемещение

Если в качестве файла назначения указан новый путь и новое имя файла, то файл будет перемещен и переименован. Например, следующая команда перемещает файл myfile1.dat в директорию /home/pingvinus/dir и переименовывает его в myfile2.dat :

mv /home/pingvinus/myfile1.dat /home/pingvinus/dir/myfile2.dat

Переименование командой rename

Команда rename служит для массового (пакетного) переименования файлов. Она позволяет выполнять замену определенных символов или частей имени файла и использованием Perl-регулярных выражений.

Если вдруг в вашем дистрибутиве нет команды rename , то ее можно установить, выполнив (выберите соответствующую команду для вашего дистрибутива):

sudo apt install rename sudo yum install prename yaourt -S perl-rename

Синтаксис команды rename :

rename опции ’s/ старое_имя / новое_имя ’ файлы

старое_имя — регулярное выражение или часть имени файла, которое нужно заменить на новое_имя .
новое_имя — задает результирующее имя файла (может быть регулярным выражением).

Основные опции:
-f — перезаписывать существующие файлы.
-n — вывести список файлов, которые будут переименованы и их новые имена, но не выполнять переименование.
-v — вывести список обработанных файлов.

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

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

Массово изменить расширение .html на .php у всех html-файлов.

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

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

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

Замена пробелов на подчеркивание

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

rename 'y/ /_/' *

Конвертация имен файлов в строчные буквы

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

Конвертация имен файлов в прописные буквы

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

Показать, что именно будет переименовано, но не переименовывать

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

Например, мы хотим изменить расширение у файлов с .jpeg на .jpg . Используем опцию -n , чтобы просто вывести какие файлы будут переименованы:

rename -n 's/\.jpeg$/.jpg/' *

Полное описание команд mv и rename можно получить, выполнив в терминале команды:

man mv man rename

Массовое переименование с использованием программ

Для массового переименования файлов можно воспользоваться программами:

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

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