我有一组与“ assignment02.cc”,“ assignment02.h”,“ assignment02.txt”等模式匹配的文件。我想将这些文件复制/重命名为“ assignment03.cc”,“ assignment03”。 h”,“ assignment03.txt”等。
我怀疑应该使用Shell脚本并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
,而实际上并没有进行正则表达式查找/替换。
注意:在Internet上有一个rename
具有此功能的命令,但该命令在我的MacBook上不可用。
newname=$(echo $name | tr $OLD_NO $NEW_NO)
$OLD_NO
和$NEW_NO
将不会扩大。