重命名批处理文件,并在下划线前添加前导零
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
我有多个文件 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