我有一个文件目录,例如:
file.1.png
file.2.png
…
file.10.png
…
file.1000.png
file.1001.png
…
Run Code Online (Sandbox Code Playgroud)
如何将数字填充为 4 位数字?它应该像这样结束:
file.0001.png
file.0002.png
…
file.0010.png
…
file.1000.png
file.1001.png
…
Run Code Online (Sandbox Code Playgroud)
这也将起作用:
for f in *.png; do
int=`basename $f .png | cut -d '.' -f 2`
new_name=`printf "file.%0.4i.png\n" $int`
[ ! -f $new_name ] && mv $f $new_name
done
Run Code Online (Sandbox Code Playgroud)
如果您想要一个简单的、可移植的脚本,一个简单的技巧是从 10001 开始计数并去除初始数字。
for x in file.*.png; do
n=${x%.*}; n=${n##*.}
n=$((n + 10000))
mv "$x" "${x%.*.*}.${n#1}.${x##*.}"
done
Run Code Online (Sandbox Code Playgroud)
setopt extended_glob
autoload zmv
zmv '(file).([0-9]##).(png)' '$1.${(l:4::0:)2}.$3'
Run Code Online (Sandbox Code Playgroud)
请尝试以下操作:
for f in *.png
do
foo='0000'${f#file.} #remove "file." and prepend 0000
foo=${foo:(-8)} #last eight characters
echo mv $f file.$foo
done
Run Code Online (Sandbox Code Playgroud)
如果您对输出满意,请删除回声。