使用数学运算重命名文件
Rename files using math operations
我正在尝试使用 bash 命令重命名一些文件,但我不知道如何将算术 expression/math 运算添加到正则表达式中。
输入:
a000.png
a001.png
...
输出:
a010.png
a011.png
...
我正在尝试将 10 添加到名称中。
我试过的一些东西:
rename -n -e 's/a(\d+).png/a + 10.png/' *
rename -n -e 's/a(\d+).png/a{ + 10}.png/' *
rename -n -e 's/a(\d+).png/a$( + 10).png/' *
有没有简单的方法可以做到这一点?
这应该可以解决问题。如果您不想要前导零,您可以删除 sprintf
以及 "%03d"
格式字符串。此外,如果要重命名的文件 总是 以 a
开头,您还可以将前导正则表达式 [a-zA-Z]*
替换为文字字符 a
。最后,尽管 *
文件说明符可能就足够了,但我建议添加一个扩展名作为额外的安全预防措施(例如 *.png
)。
As always, try it out first using the -n
flag to verify the rename is correct.
rename -v 's/([a-zA-Z]*)([0-9]*)/.sprintf("%03d",+10)/e' *
如果您不想使用 rename
重命名,您仍然可以使用 bash 语法。我有一堆旧日志需要转移 5 天,如:
log.365.gz -> log.370.gz
log.364.gz -> log.369.gz
...
我用了一个for循环倒数:
for date in {365..1}; do
mv -nv log.$date.gz log.$(date+5).gz
done
-n
标志移动了文件而没有破坏旧文件。
我正在尝试使用 bash 命令重命名一些文件,但我不知道如何将算术 expression/math 运算添加到正则表达式中。
输入:
a000.png
a001.png
...
输出:
a010.png
a011.png
...
我正在尝试将 10 添加到名称中。
我试过的一些东西:
rename -n -e 's/a(\d+).png/a + 10.png/' *
rename -n -e 's/a(\d+).png/a{ + 10}.png/' *
rename -n -e 's/a(\d+).png/a$( + 10).png/' *
有没有简单的方法可以做到这一点?
这应该可以解决问题。如果您不想要前导零,您可以删除 sprintf
以及 "%03d"
格式字符串。此外,如果要重命名的文件 总是 以 a
开头,您还可以将前导正则表达式 [a-zA-Z]*
替换为文字字符 a
。最后,尽管 *
文件说明符可能就足够了,但我建议添加一个扩展名作为额外的安全预防措施(例如 *.png
)。
As always, try it out first using the
-n
flag to verify the rename is correct.
rename -v 's/([a-zA-Z]*)([0-9]*)/.sprintf("%03d",+10)/e' *
如果您不想使用 rename
重命名,您仍然可以使用 bash 语法。我有一堆旧日志需要转移 5 天,如:
log.365.gz -> log.370.gz
log.364.gz -> log.369.gz
...
我用了一个for循环倒数:
for date in {365..1}; do
mv -nv log.$date.gz log.$(date+5).gz
done
-n
标志移动了文件而没有破坏旧文件。