Используйте переименование неизвестной длины строки

У меня есть некоторые файлы

"file 1 [EN MR RE EF SF DS DE].txt"
"file 2 [EN MR].txt"
"file 3 [EN MR RE EF].txt"

ID, как использовать , переименовать , чтобы удалить раздел [*] .

Я пробовал:

rename  -n 's/\[*]//g' *.mkv

Rename не работает с * , поэтому я застрял.

Вывод должен быть

"file 1.txt"
"file 2.txt"
"file 3.txt"

Спасибо

0
задан 26 February 2021 в 23:45

2 ответа

На основе Perl Оператор Rename S Оператор Регулярные выражения не оболочки подстановочные знаки. Регулярное выражение для любого персонажа нулю или более раз составляет . * , а не * . Кроме того, [ и ] имеют специальные значения и должны быть сбережены, если вы хотите, чтобы они были соответствовать буквально. Итак:

$ rename -n 's/ \[.*\]//' file*.txt
rename(file 1 [EN MR RE EF SF DS DE].txt, file 1.txt)
rename(file 2 [EN MR].txt, file 2.txt)
rename(file 3 [EN MR RE EF].txt, file 3.txt)

Удалить -N , как только вы будете довольны предлагаемыми заменами.

1
ответ дан 18 March 2021 в 23:30

Вы также можете использовать петлю и стандартную утилиту MV :

for i in *.txt; do
  mv "$i" "${i% [*}.txt"
done
0
ответ дан 18 March 2021 в 23:30

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

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