我需要编写一个shell脚本。
我写了一个脚本:
for file in *.gif
do
filename=$(basename "$file")
filename=${filename%.*}
convert $file $filename.tlf
done
你认为这对吗?如何添加名称更改?
PS:请不要编辑主题,因为文件名是特殊信息。
nr=0
for file in *.gif; do
nr=$(($nr+1))
filename="$(basename "$file")"
filename="${filename%.*}"
convert "$file" "${nr}_$filename.tlf"
done
如果你打算使用basename
命令而不是参数扩展,你应该通过给它一个扩展后缀来充分利用它。这将用一块石头照顾两只鸟。
nr=0
for file in *.gif; do
filename="$(( ++nr ))_$(basename "$file" .gif).tlf"
convert "$file" "$filename"
done
您还可以通过参数扩展来完成所有操作:
nr=0
for file in *.gif; do
filename="$(( ++nr ))_${file##*/}"
filename="${filename%.*}"
convert "$file" "$filename"
done
参数扩展的好处是您不必每次迭代都调用子shell。除非您需要处理大量文件,否则不会有什么不同。