2013-07-10 4 views
0

Просто начинаю с Bash, и я пытаюсь написать что-то, чтобы легко переименовать несколько файлов. Трудность состоит в том, что это не просто добавление или изменение расширения.Переименование нескольких файлов в bash.

Файлы Я пытаюсь назвать это от этого формата

IIS-1af24fa93f090177fe770e1213caf3a3-443.hex 

Для этого формата

1af24fa93f090177fe770e1213caf3a3 

я получил что-то вроде этого до сих пор, но он возвращает ошибки

for f in ./* ; do mv "$f" "$(ls /root/download_logs/ | cut -d \- -f2)" ; done 

Любая помощь будет оценена!

Спасибо, Майк

+2

'возвращает errors'? Разрабатывать. – keyser

+1

Кроме того, анализ 'ls' вывода должен быть [избежен] (http://mywiki.wooledge.org/ParsingLs). –

+0

Спасибо за это. Не понял. – Michaelleemac

ответ

1

Попробуйте что-нибудь подобное вместо этого:

for f in IIS-*.hex; do 
    newname=${f%-*} 
    newname=${newname#*-} 
    mv "$f" "$newname" 
done 
+0

Это отлично работает! -raw все еще находится в конце имени файла, но я надеюсь, что смогу выяснить, как избавиться от этого бита, основываясь на методе, который вы мне показали. – Michaelleemac

+0

Что--выражение? В вашем вопросе нет '-raw'. –

+0

Плохо, я просто это понял. Я хотел копировать в двух примерах, но я только копировал их в одном. Теперь все в порядке, поскольку у меня есть решение благодаря вам. Благодарю. – Michaelleemac

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