Существует ли способ переименовать несколько файлов в одном лайнере на терминале?

Я понимаю, как переименовать несколько использований файлов для циклов и такой, но я задавался вопросом, был ли способ переименовать всего два файла в использовании одной команды mv при сохранении определенных строк последовательными?

Например, если у меня есть два файла, что я хочу переименовать часть только:

txt_ID12123_R1_001_jan.txt
txt_ID12123_R2_001_jan.txt

И все, что я хочу сделать, переименовывают 'txt', но сохраняют другие строковые компоненты тем же:

exam_R1_001.txt
exam_R2_001.txt

Существует ли один лайнер, где можно использовать regex выражения для хранения определенных переменных последовательными? Строки R1 и R2 очень важны для хранения. Я попробовал изменения:

mv txt_1D12123_R[1,2]_001_jan.txt exam_R[1,2]_001.txt

Но это, очевидно, не работает. По существу целое имя файла является тем же за исключением R1 и R2, таким образом, я хотел сохранить те строки в такте и переименовать его соответственно. Я также попробовал {1,2}, но фигурная скобка не имела никакого значения. Просто задавшись вопросом - я только должен сделать это время от времени, настолько пишущий цикл для двух файлов казался глупым, и пишущий mv дважды не грандиозное предприятие, но я полагал, что должен быть некоторый короткий путь к нему.

0
задан 22 January 2020 в 20:11

3 ответа

Можно использовать команду mmv для переименования файлов

mmv '*txt_1D12123*' '#1exam#2'

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

0
ответ дан 23 January 2020 в 10:09

Установите rename пакет,

sudo apt install rename

затем это просто (хорошо, если Вы довольны жемчугом):

rename 's/.*(_R[12]_\d+).*/exam${1}.txt/' txt*.txt
0
ответ дан 23 January 2020 в 10:09

Для Переименования файлов с помощью regex Вас нуждаются renameинструмент.

Установка переименовывает инструмент

sudo apt install rename

Затем выполненные follwing управляют для переименования всего наличия файлов .txt расширение с шаблоном, который Вы указали т.е. exam_R1_R2.txt

rename 's/(\S)*_R(\d{1})_(\d+)_(\w{3})\.txt/exam_R$2_$3\.txt/' *.txt

Этим первым аргументом в одинарных кавычках является regex шаблон, который соответствует и занимает место с именем файла с соответствием группам, имеющим R1 и R2 и второй аргумент *.txt обозначает наличие файлов .txt расширение

Узнайте больше о regex здесь, и можно попробовать regex, тестирующий здесь

0
ответ дан 23 January 2020 в 10:09

Другие вопросы по тегам:

Похожие вопросы: