重命名批处理文件,并在下划线前添加前导零

rename batch files, and add leading zero's before underscore

我有多个文件 Batch1_00000001 直到 Batch9999_00000001 包含以下文件名:

Batch1_00000001.pdf
Batch10_00000001.pdf
Batch100_00000001.pdf
Batch1000_00000001.pdf

首先,我想删除单词 Batch 并在文件名前面添加字母 b。之后我想在开头添加最多三个前导零。这样 b1_00000001.pdf 变成 b0001_00000001.pdf 就像:

b0001_00000001.pdf
b0010_00000001.pdf
b0100_00000001.pdf
b1000_00000001.pdf

有没有人有解决方案来分解这一切,或者制作一个单一的正则表达式 rename 解决方案?提前致谢!

你可以试试:

#!/bin/bash
cd /directory_contain_files
for file in *.pdf; do
        index=$(echo $file | cut -d'_' -f1 | grep -o "[0-9]*")
        if [[ $index -lt 10 ]]; then
                index="000$index"
        elif [[ $index -lt 100 ]]; then
                index="00$index"
        elif [[ $index -lt 1000 ]]; then
                index="0$index"
        fi
        mv $file b${index}_00000001.pdf
done