2013-12-08 87 views
0

对于Bash专家来说,这可能是一个简单的问题,但您能否帮我纠正我的脚本。Bash批处理文件重命名

我想将目录中的每个.png文件都重命名并保存到另一个文件夹中。我想取第一个文件并将其命名为“SV314r.png”,下一个文件应该是“SV314v.png”,下一个文件应该是“SV315r.png”,然后是下一个“SV315v.png”,依此类推。

它需要从r替换为v,为每个folio页码指示“front(recto)”和“back(verso)”。我得到的错误与我的“如果”条件,并与我试图增加“NUM”变量和R开关的“侧面”变量诉

num=314 
side="r" 
for file in *.png 
do 

    cp "${file}" "../rename/SV"$num$side".png" 

    if [ $side == "r" ]; then 
     num=$num 
     side="v" 
    else 
     num=$num + 1 
     side="r" 
    fi 
done 

回答

0

这里唯一的问题是与算术评估bash

通过

num=$(($num + 1)) 

替换

num=$num + 1 

此外变量扩展发生双引号内。因此额外的报价是没有必要的。

cp "${file}" "../rename/SV${num}${side}.png" 
+0

我仍然得到同样的错误:./filerename.sh:第10行:[:缺少']” ./filerename.sh:行14民:没有找到命令 ./filerename。 sh:第15行:side:command not found – Jeff

+0

@Jeff检查'num'和'='符号之间是否有空格。不应该有。 –