Я хочу переименовать все файлы в текущем каталоге. Поэтому прямо сейчас они имеют форму: «xxx-9666_01.so», я хочу переименовать его в «xxx_9444_01.so». Как это сделать в Linux?Как переименовать все файлы в текущем каталоге в linux
0
A
ответ
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
)
Вы должны объяснить вид изменения, которое вы хотите указать в именах файлов, например, действительно ли вы хотите, чтобы '9666' стал' 9444', если он встречается в имени файла? Я не думаю, что это то, чего ты хочешь. – fvu
Возможный дубликат [Переименование большого количества файлов в Linux в соответствии с шаблоном] (http://stackoverflow.com/questions/6316600/renaming-lots-of-files-in-linux-according-to-a-pattern) – larsks
@fvu да только это – Arshad