У меня есть некоторые файлы
"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"
Спасибо
На основе 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
, как только вы будете довольны предлагаемыми заменами.
Вы также можете использовать петлю и стандартную утилиту MV
:
for i in *.txt; do
mv "$i" "${i% [*}.txt"
done