如何重新编目“ab0001.xyz”“ab0002.xyz”......“ab0200.xyz”等目录中的文件 相同的编号,但添加一个常数(比如97),所以“ab0098.xyz”“ab0099.xyz”......“ab0297.xyz”
另外,如果您可以在每个功能上添加一些评论,那么我不必再问一些类似的东西了。
谢谢!
答案 0 :(得分:1)
您可以使用此脚本。在文件所在的同一目录中执行。我确信有更简洁的解决方案......
#/usr/bin/env bash
export BASN=ab # basename
export EXT=xyz # extension
export CONST=97 # constant to add
for fl in ${BASN}*.${EXT}; do
noe=${fl%%.${EXT}} # trim extension
num=${noe##${BASN}} # trim basename
tar=${BASN}`printf '%04d' $((num + ${CONST}))`.${EXT} # construct target
mv ${fl} ${tar}
done
答案 1 :(得分:1)
解决方案取决于几个方面。例如,如果您始终使用相同的名称并且始终具有四位数字,则解决方案会更容易一些。例如:
CONSTANT=97
for i in `echo ab*.xyz | sort -r` ; do
filenumber=`echo $i | tr -dc 0-9`
numberadd=`expr $filenumber + $CONSTANT`
mv $i ab`printf "%04d" $numberadd`.xyz
done
您已经定义了CONSTANT
,然后您只提取名称中的数字并使用它们与expr
的常量相加。然后,使用printf
更改文件名,只打印4个用零填充的数字。