大虾们,请教一个简单的UNIX shell脚本问题
我在Saloris10下写了个shell脚本,是k shell开发的, 不是b shell,需求很简单:
在一个目录下有一批文件,文件名规则是:
ok.Z_US_PO_当前时间.xml
比如:ok.Z_US_PO_20120830220815.xml ,ok.Z_US_PO_20120829060522.xml , ok.Z_US_PO_20120828210315.xml
需要将这样的文件(在同一目录下,我放在/export/home/webm/test/exp下)批量改成 Z_US_PO_20120830220815.xml.ok这种格式,只是把ok的位置换,但我UNIX SHELL刚入门,很菜,写了一个脚本一直调试不好,现请大虾们帮忙,急!谢谢啦,脚本如下:
##############################################################
#!/bin/bash
cd /export/home/webm/test/exp
for i in *ok.a
do
echo "Before: " $i
mv $i ${i#*.}.${i%.*}
echo "After: "${i#*.}.${i%.*}
done
##############################################################
[解决办法]
cd /export/home/webm/test/exp
改前:
# ls
ok.Z_US_PO_20120830220815.xml ok.Z_US_PO_20120830220816.xml
方法1:
ls |awk -F"." '{system("mv "$0" "$2"."$3"."$1)}'
方法2:
ls |sed -n 's/\(ok\).\(.*\)/mv & \2.\1/e'
改后:
# ls
Z_US_PO_20120830220815.xml.ok Z_US_PO_20120830220816.xml.ok
可以根据实际改改
[解决办法]