我有很多文件需要处理,我需要在 bash 中用这种格式替换它们的原始名称:
00000000000001_1.jpg
00000000000002_1.jpg
00000000000003_1.jpg
等等
答案1
改编自Oli 的回答之一:
rename -n 's/.+/our $i; $i++; sprintf("%014d_1.jpg", $i)/e' *
这将获取当前目录下的每个文件,并使用带数字的数字对其进行重命名14
(我希望我数得没错),然后_1.jpg
.our $i
引入一个全局变量i
,然后将其增加一并打印sprintf
.e
命令以表达式而不是字面形式rename
评估替换的右侧(=第二个和第三个之间的所有内容/
)。如果您对结果满意,请删除-n
以执行重命名。
如果你想深入了解 perl 表达式及其美妙之处,perldoc 文档是正确的做法。
答案2
这对你有用吗:
i=1
for file in *; do
mv "$file" "$(printf %014d $i)_1.jpg"
i=$((i+1))
done
它将重命名当前目录下的每个文件,如下所示:
00000000000001_1.jpg
.
.
00000000000009_1.jpg
.
.
00000000000010_1.jpg
.
.