如何使用脚本重新编号文件?

时间:2014-06-06 16:42:26

标签: bash shell

如何重新编目“ab0001.xyz”“ab0002.xyz”......“ab0200.xyz”等目录中的文件 相同的编号,但添加一个常数(比如97),所以“ab0098.xyz”“ab0099.xyz”......“ab0297.xyz”

另外,如果您可以在每个功能上添加一些评论,那么我不必再问一些类似的东西了。

谢谢!

2 个答案:

答案 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个用零填充的数字。