有时候需要批量修改文件名后缀,比如把*.aa改为*.bb,网上搜的都是shell程序,我试验一下,下面bash命令可以解决:
ls *.aa | awk -F '.' '{print $1}' | xargs -I {} mv {}.aa {}.bb
xargs -I {} 表示用参数替换后面的{}。
上面说到shell程序,所以也可以写一个脚本,比如rn_ext.sh:
for i in `ls *.$1`
do
mv $i ${i%.*}.$2
done
然后就可以用来改后缀了,比如我要把aa后缀改为bb后缀:
. rn_ext.sh aa bb
${i%.*}是取文件名中主体部分。例如:
file="thisfile.txt"
echo "filename:${file%.*}"
echo "extension:${file##*.}"
输出:
filename:thisfile
extension:txt
Linux有个rename命令,我用的Ubuntu,用这个命令需要安装rename,安装后:
ls *.aa |xargs rename 's/.aa/.bb/'
这样也能*.aa->*.bb。