Tôi có một tập hợp các tệp khớp với một mẫu như 'gán02.cc', 'gán02.h', 'gán02.txt', v.v. Tôi muốn sao chép / đổi tên các tệp này thành 'gán03.cc', 'gán03. h ',' gán03.txt ', v.v.
Tôi nghi ngờ điều này nên được sử dụng một kịch bản shell và sed. Cho đến nay tôi có:
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
Thật không may, cách tôi gọi sed luôn trả về chuỗi đầu vào $name
và không thực sự thực hiện việc tìm / thay thế regex.
Lưu ý: Nhìn trên internet có một rename
lệnh có chức năng này, nhưng không có trên MacBook của tôi.
newname=$(echo $name | tr $OLD_NO $NEW_NO)
$OLD_NO
và$NEW_NO
sẽ không được mở rộng.