【发布时间】:2017-05-08 00:42:03
【问题描述】:
我在这样的文件夹中有一堆文件名:
test_07_ds.csv
test_08_ds.csv
test_09_ds.csv
test_10_ds.csv
...
我想减少每个文件的数量,使它们变成:
test_01_ds.csv
test_02_ds.csv
test_03_ds.csv
test_04_ds.csv
...
这是我想出的:
for i in $1/*; do
n=${i//[^0-9]/};
n2=`expr $n - 6`;
if [ $n2 -lt 10 ]; then
n2="0"$n2;
fi
n3=`echo $i | sed -r "s/[0-9]+/$n2/"`
echo $n3;
cp $i "fix/$n3";
done;
有没有更清洁的方法?
【问题讨论】:
-
如果您有基于 perl 的重命名命令,请尝试
rename -n 's/\d+/sprintf "%02d", $&-6/e' test_*...-n选项用于试运行。如果发生冲突,它可能会抱怨已经存在的文件,但如果 @ 应该可以工作987654326@是自动版本排序的,给定的数字都是两位数
标签: regex bash sed rename filenames