我是awk和shell编程的新手.我有一堆文件名file_0001.dat,file_0002.dat......file_1000.dat.我想更改文件名,例如file_之后的数字与之前的文件名相比将是4的倍数.所以我想改变
file_0001.dat to file_0004.dat
file_0002.dat to file_0008.dat
Run Code Online (Sandbox Code Playgroud)
等等.
任何人都可以建议一个简单的脚本来做它.我尝试了以下但没有任何成功.
#!/bin/bash
a=$(echo $1 sed -e 's:file_::g' -e 's:.dat::g')
b=$(echo "${a}*4" | bc)
shuf file_${a}.dat > file_${b}.dat
Run Code Online (Sandbox Code Playgroud)
这个脚本将为你完成这个技巧:
#!/bin/bash
for i in `ls -r *.dat`; do
a=`echo $i | sed 's/file_//g' | sed 's/\.dat//g'`
almost_b=`bc -l <<< "$a*4"`
b=`printf "%04d" $almost_b`
rename "s/$a/$b/g" $i
done
Run Code Online (Sandbox Code Playgroud)
之前的文件:
文件_0001.dat 文件_0002.dat
第一次执行后的文件:
文件_0004.dat 文件_0008.dat
第二次执行后的文件:
文件_0016.dat 文件_0032.dat