2016-07-28 4 views
0

Я хочу переименовать все файлы в текущем каталоге. Поэтому прямо сейчас они имеют форму: «xxx-9666_01.so», я хочу переименовать его в «xxx_9444_01.so». Как это сделать в Linux?Как переименовать все файлы в текущем каталоге в linux

+0

Вы должны объяснить вид изменения, которое вы хотите указать в именах файлов, например, действительно ли вы хотите, чтобы '9666' стал' 9444', если он встречается в имени файла? Я не думаю, что это то, чего ты хочешь. – fvu

+0

Возможный дубликат [Переименование большого количества файлов в Linux в соответствии с шаблоном] (http://stackoverflow.com/questions/6316600/renaming-lots-of-files-in-linux-according-to-a-pattern) – larsks

+0

@fvu да только это – Arshad

ответ

0

Использование цикла:

for f in *-9666_01.so; do 
    echo mv "$f" "${f%-9666_01.so}_9444_01.so" 
done 

Удалите echo, когда вы будете уверены, что он делает то, что вы хотите, чтобы это сделать.

0

Разновидность предыдущего ответа, используя расширение параметра с замены подстроки (в отличие от удаления подстроки) может достичь той же цели, и может быть немного более читаемым:

for f in *-9666_01.so; do 
    echo mv "$f" "${f/-9666/-9444}" 
done 

(удалите echo, когда вас устраивает операция)

(где замена подстанции будет повторно место a с b в f используя форму ${f/a/b} (закрытие / подразумевается), чтобы заменить экземпляр aпервого с b или ${f//a/b} заменить всех экземпляров a с b)