У меня есть коллекция файлов, соответствующих шаблону, например «assignment02.cc», «assignment02.h», «assignment02.txt» и т. Д. Я хотел бы скопировать / переименовать эти файлы в «assignment03.cc», «assignment03». h ',' assignment03.txt 'и т. д.
Я подозреваю, что это должно быть прямо с использованием сценария оболочки и sed. Пока что у меня есть:
OLD_NO=$1
NEW_NO=$2
echo "Moving from $OLD_NO to $NEW_NO"
for name in assignment$OLD_NO.* ; do
newname=$(echo $name | sed 's/\(.*\)$OLD_NO\(.*\)/\1xx$NEW_NO\2/')
echo "$name -> $newname"
# mv -v $name $newname
done
К сожалению, способ, которым я вызываю sed, всегда возвращает входную строку $name
и фактически не выполняет регулярное выражение find / replace.
Примечание: при просмотре в Интернете есть rename
команда, которая имеет эту функцию, но ее нет на моем MacBook.
newname=$(echo $name | tr $OLD_NO $NEW_NO)
$OLD_NO
и$NEW_NO
не будет расширяться.