我需要编写一个shell脚本。
我写了一个剧本:
for file in *.gif
do
filename=$(basename "$file")
filename=${filename%.*}
convert $file $filename.tlf
done
您认为这是对的吗?如何添加名称更改?
PS:请不要编辑主题,因为文件名是特殊信息。
答案 0 :(得分:3)
nr=0
for file in *.gif; do
nr=$(($nr+1))
filename="$(basename "$file")"
filename="${filename%.*}"
convert "$file" "${nr}_$filename.tlf"
done
答案 1 :(得分:1)
如果你打算使用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。除非您需要处理大量文件,否则它不会产生任何影响。