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

Модератор: Vadim


Автор темы
KuvshinoF
Сообщения: 4
Зарегистрирован: 10 июл 2020, 14:02

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

#11

Сообщение KuvshinoF » 20 июл 2020, 09:15

zhart: Да, можно объединить несколько команда через амперсант, но такие склеенные команды не воспринимает Qt-ый QProcess, через который я программно выполняю bash-команды

Аватара пользователя

zhart
Администратор
Сообщения: 1898
Зарегистрирован: 16 дек 2010, 13:09

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

#12

Сообщение zhart » 20 июл 2020, 21:53

KuvshinoF, напрашивается вариант прописать нужные команды в виде простенького bash-скрипта (в отдельный файл), и вызывать в нужном месте этот файл. Хотя и не знаю, насколько такой вариант уместен в вашем случае.

P.S.: Я если что не программист, могу сморозить глупость, не обессудьте))


ВикторА
Сообщения: 535
Зарегистрирован: 06 ноя 2011, 11:10

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

#13

Сообщение ВикторА » 27 июл 2020, 11:16

KuvshinoF писал(а):
10 июл 2020, 14:07
Есть несколько файлов- file1.txt, myfile2.bin, file3.cfg
подскажите пожалуйста как можно ОДНОЙ командой переименовать file1.txt в file1_old.txt и file3.cfg в file3_old.cfg, а файл myfile2.bin не трогать.
Если еще актуально:
команда:
find ~/Рабочий\ стол/forum/ -name "file[13].*" -exec rename -n 's/\./\_old\./g' {} \;

осуществляет переименование без внесения изменений, отображая нам, как все будет:

rename(/home/anna/Рабочий стол/forum/file1.txt, /home/anna/Рабочий стол/forum/file1_old.txt)
rename(/home/anna/Рабочий стол/forum/file3.cfg, /home/anna/Рабочий стол/forum/file3_old.cfg)

убеждаемся, что изменений нет:
ls
file1.txt file3.cfg myfile2.bin

убираем опцию -n для записи изменений реально:

find ~/Рабочий\ стол/forum/ -name "file[13].*" -exec rename 's/\./\_old\./g' {} \;

проверяем командой ls. что изменения есть и правильные:
anna@Mini-311:~/Рабочий стол/forum$ ls
file1_old.txt file3_old.cfg myfile2.bin

На рабочем столе создал папку forum и в ней нужные Вам файлы.
Команда find ищет по указанному ей адресу-в данном случае, если даже зашли в папку (как обычно делается для удобства), нужно прописать полный путь к папке с файлами, чтобы в пути не было!!!!! точки( она нам нужна- используется для переименования).
-команда find файлы ищет в любом количестве по одинаковым составляющим (указано какие файлы).
Потом -exec указывает команду. которой передаются найденные файлы и она над каждым файлом ({}) делает переименование "точки" в " _old."
Опция -n отображает нам, как будет изменено имена файлов, но не записывает изменения, а если ее убрать, переименование осуществиться.


vik7
Сообщения: 219
Зарегистрирован: 09 ноя 2014, 00:33

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

#14

Сообщение vik7 » 28 июл 2020, 01:14

ВикторА, а как с помощью терминала сделать такое переименование:
есть, например, 800 файлов .mp3 (несколько аудиокниг). Имена файлов самые разные.
Как командой переименовать их от 001.mp3 до 800.mp3 ? Соблюдая очередность файлов,конечно.
Пожалуйста,поподробнее.


ВикторА
Сообщения: 535
Зарегистрирован: 06 ноя 2011, 11:10

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

#15

Сообщение ВикторА » 29 июл 2020, 01:29

vik7 писал(а):
28 июл 2020, 01:14
ВикторА, а как с помощью терминала сделать такое переименование:
есть, например, 800 файлов .mp3 (несколько аудиокниг). Имена файлов самые разные.
Как командой переименовать их от 001.mp3 до 800.mp3 ? Соблюдая очередность файлов,конечно.
Пожалуйста,поподробнее.
В терминале пишем:

Код: Выделить всё

>skript.ps
Это будет имя нашего скрипта, и жмем энтер
потом :

Код: Выделить всё

nano skript.ps
если другой редактор, не nano. тогда его пишем...
В открытом файле пишем:

Код: Выделить всё

#!/bin/bash
n=0
# (это переменная для счета будет)
for file in ~/papka_s_faylami/*.mp3
# (это для переменной file (для подстановки файлов)  в папке-указывается путь, где файлы...)
do
# (выполнить)
let n+=1
# (указываем шаг счетчика)
mv $file ~/papka_s_faylami/$n.mp3
# (команда mv переименовывает каждый файл и помещает его в ту же папку)
done
# (окончание)
Сохранить и закрыть файл-выйти..
Сделать файл исполняемым:

Код: Выделить всё

chmod +x skript.ps 
Далее:
Создать папку. Поместить туда несколько копий файлов mp3.
(Имя папки должно быть как в скрипте. Эта папка должна быть в этом скрипте прописана.)
Запустить скрипт:

Код: Выделить всё

./skript.ps
Проверить папку с файлами, как переименовались. Все действия-под вашу ответственность! :D
Я тоже не программист и могу сморозить что-то.. :D


vik7
Сообщения: 219
Зарегистрирован: 09 ноя 2014, 00:33

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

#16

Сообщение vik7 » 29 июл 2020, 01:36

Спасибо за подробный ответ.


vik7
Сообщения: 219
Зарегистрирован: 09 ноя 2014, 00:33

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

#17

Сообщение vik7 » 29 июл 2020, 01:40

А если имя файла нужно начинать не с 001.мр3, а, например с 333 ?
Лучше бы было одной командой переименовать все файлы в папке начиная с такой-то номер.
Тогда я этот номер изменял бы на нужный.


ВикторА
Сообщения: 535
Зарегистрирован: 06 ноя 2011, 11:10

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

#18

Сообщение ВикторА » 29 июл 2020, 14:21

KuvshinoF писал(а):
10 июл 2020, 14:07
Есть несколько файлов- file1.txt, myfile2.bin, file3.cfg
подскажите пожалуйста как можно ОДНОЙ командой переименовать file1.txt в file1_old.txt и file3.cfg в file3_old.cfg, а файл myfile2.bin не трогать.
А если это задание преподавателя или на спор и принципиально только одной командой, а не спаренной, то задачу можно решить с помощью команды mmv
Её надо установить:
sudo apt install mmv

Затем войти в каталог с файлами в терминале, чтобы пути не прописывать и было короче.
Пример:
$ ls
file1.txt file3.cfg myfile2.bin

Выполняем команду:
$ mmv '*[13].*' '#1#2_old.#3'

Проверяем выполнение:
$ ls
file1_old.txt file3_old.cfg myfile2.bin


ВикторА
Сообщения: 535
Зарегистрирован: 06 ноя 2011, 11:10

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

#19

Сообщение ВикторА » 29 июл 2020, 14:32

vik7 писал(а):
29 июл 2020, 01:40
А если имя файла нужно начинать не с 001.мр3, а, например с 333 ?
Лучше бы было одной командой переименовать все файлы в папке начиная с такой-то номер.
Тогда я этот номер изменял бы на нужный.
Тогда в скрипте отредактируйте: вместо n=0 впишите n=332 и счет файлов начнется с 333


vik7
Сообщения: 219
Зарегистрирован: 09 ноя 2014, 00:33

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

#20

Сообщение vik7 » 01 авг 2020, 02:00

Спасибо.

Ответить