2014-08-29 4 views
0

Я некоторые файлы с именем, как показано ниже:Удаление шаблона из имен файлов

e2ed150l145l245St01-Oxs_MinDriver-Magnetization-00-0002105.omf 
e2ed150l145l250St01-Oxs_MinDriver-Magnetization-00-0002167.omf 
e2ed150l145l255St01-Oxs_MinDriver-Magnetization-00-0001519.omf 
e2ed150l145l260St01-Oxs_MinDriver-Magnetization-00-0001841.omf 
e2ed150l145l265St01-Oxs_MinDriver-Magnetization-00-0002730.omf 
e2ed150l145l270St01-Oxs_MinDriver-Magnetization-00-0002788.omf 
e2ed150l145l275St01-Oxs_MinDriver-Magnetization-00-0001616.omf 
e2ed150l150l250St01-Oxs_MinDriver-Magnetization-00-0002386.omf 
e2ed150l150l2100St01-Oxs_MinDriver-Magnetization-00-0015577.omf 

Я хочу переименовать их:

e2ed150l145l245St01.omf 
e2ed150l145l250St01.omf 
e2ed150l145l255St01.omf 
e2ed150l145l260St01.omf 
e2ed150l145l265St01.omf 
e2ed150l145l270St01.omf 
e2ed150l145l275St01.omf 
e2ed150l150l250St01.omf 
e2ed150l150l2100St01.omf 

После некоторых из подобных форумов, которые я использовал несколько команд, в том числе:

rename 's/-Oxs_MinDriver-Magnetization-00-[0-9]*//g' e2e*.omf -v 

Но это не сработало. Пожалуйста, порекомендуйте.

+0

Это работает для меня. – Barmar

ответ

1

Вы также можете использовать mv, а также:

for i in e2e*.omf; do 
    mv $i ${i%%-*}.omf 
done 

или

for i in e2e*.omf; do 
    mv $i ${i//-*/}.omf 
done 

Чтобы свернуть в одну строку:

for i in e2e*.omf; do mv $i ${i%%-*}.omf; done 

Если адресат уже существует использовать mv -f

+0

Это работает. Но я не знаю, как это сделать. Что означает {i %% - *} здесь? – DKS

+0

Это часть расширения ** ** **, используемого для ** подстроки **. Одна из самых полезных частей баша. '$ {var ## * x}' означает ** начало слева ** и удалить все, вплоть до и включительно, 'x'. (используйте один '#' только для первого появления). '$ {var %% x *}' - то же самое, но ** начинаться справа **. (** примечание: ** как '*' изменяется позиция) То же примечание для одного '%'. Вторая форма '$ {var // x * /}' является ** заменой подстроки **. Здесь он находит find 'x *' и заменяет его ** ничем **. Истинная форма '$ {var // x/y /}'. Поскольку 'y' ничего не значит, подразумевается закрытие'/'. HTH –

+0

Спасибо за разъяснение. – DKS

Смежные вопросы