Переименование нескольких файлов
Модератор: Vadim
Re: Переименование нескольких файлов
zhart: Да, можно объединить несколько команда через амперсант, но такие склеенные команды не воспринимает Qt-ый QProcess, через который я программно выполняю bash-команды
Re: Переименование нескольких файлов
KuvshinoF, напрашивается вариант прописать нужные команды в виде простенького bash-скрипта (в отдельный файл), и вызывать в нужном месте этот файл. Хотя и не знаю, насколько такой вариант уместен в вашем случае.
P.S.: Я если что не программист, могу сморозить глупость, не обессудьте))
P.S.: Я если что не программист, могу сморозить глупость, не обессудьте))
Re: Переименование нескольких файлов
Если еще актуально:
команда:
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 отображает нам, как будет изменено имена файлов, но не записывает изменения, а если ее убрать, переименование осуществиться.
Re: Переименование нескольких файлов
ВикторА, а как с помощью терминала сделать такое переименование:
есть, например, 800 файлов .mp3 (несколько аудиокниг). Имена файлов самые разные.
Как командой переименовать их от 001.mp3 до 800.mp3 ? Соблюдая очередность файлов,конечно.
Пожалуйста,поподробнее.
есть, например, 800 файлов .mp3 (несколько аудиокниг). Имена файлов самые разные.
Как командой переименовать их от 001.mp3 до 800.mp3 ? Соблюдая очередность файлов,конечно.
Пожалуйста,поподробнее.
Re: Переименование нескольких файлов
В терминале пишем:
Код: Выделить всё
>skript.ps
потом :
Код: Выделить всё
nano skript.ps
В открытом файле пишем:
Код: Выделить всё
#!/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

Я тоже не программист и могу сморозить что-то..

Re: Переименование нескольких файлов
Спасибо за подробный ответ.
Re: Переименование нескольких файлов
А если имя файла нужно начинать не с 001.мр3, а, например с 333 ?
Лучше бы было одной командой переименовать все файлы в папке начиная с такой-то номер.
Тогда я этот номер изменял бы на нужный.
Лучше бы было одной командой переименовать все файлы в папке начиная с такой-то номер.
Тогда я этот номер изменял бы на нужный.
Re: Переименование нескольких файлов
А если это задание преподавателя или на спор и принципиально только одной командой, а не спаренной, то задачу можно решить с помощью команды 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
Re: Переименование нескольких файлов
Тогда в скрипте отредактируйте: вместо n=0 впишите n=332 и счет файлов начнется с 333
Re: Переименование нескольких файлов
Спасибо.