2016-07-30 8 views
1

я хочу переименовать несколько файлов в моем системном каталоге линукс ....Как переименовать все файлы в каталоге в linux с заменой строки?

мои имена файлов являются:

Lec 1 - xxx.webm 
Lec 2 - xxx.webm 
Lec 3 - xxx.webm 
Lec 4 - xxx.webm 

и этот список можно продолжить ...

здесь ххх может быть любой список символов (не соответствует) ....

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

mv Lec 1 - xxx.webm Lec 1.webm 
mv Lec 2 - xxx.webm Lec 2.webm 
mv Lec 3 - xxx.webm Lec 3.webm 

и т.д ....

для в петле можно было сделать, но как сделать замену?

* полоса все символы после того, как номер должен быть мой переименованный файл

ответ

2

Этот цикл должен сделать работу:

for f in *.webm; do 
    mv "$f" "${f/ -*/}.webm" 
done 
+0

имя файла изменено на 'Лец п - webm.webm' – coolstoner

+0

Нет '$ {е/- * /}' разделит все после '' - "' в исходной строке, а затем снова будет добавлен '.webm'. – anubhava

+0

теперь все мои файлы были переименованы в 'Lec n.webm.webm' , можете ли вы помочь мне переименовать его обратно в' Lec n.webm'? я попробовал эту ссылку, но я получаю ошибку http://unix.stackexchange.com/questions/102647/how-to-rename-multiple-files-in-single-command-or-script-in-unix – coolstoner

1

${string%substring}: удаляет короткий матч $substring от задней $string.

for i in *.webm; do mv $i ${i%xxx}; done 

Или проверить:

${string%%substring}: удаляет самый длинный матч $substring от задней $string.

0

не Если вы util-linux-ng установили:

find . -name "Lec*.webm" | xargs rename s/ -*// 

или:

for file in $(find . -name "Lec*.webm") 
do 
    echo mv $file `echo $file | sed s/ -*$//` 
done 

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

  • Нет связанных вопросов^_^