如何从多个文件名中删除和添加数字?
例如,我想将文件名Apple1.sh
和 名称更改Banana2.sh
为Apple.sh
和Banana.sh
我已经在谷歌上搜索了一段时间,但没有找到确切的答案
发现了这个:
for i in *.sh; do
echo "$i" | sed 's/^[0-9_ ]*//'
done
但它仅显示输出并且不会改变文件名。
我还需要向重命名的文件名添加数字(例如 3),这样它们就变成了Apple3.sh
,但Banana3.sh
仍然找不到执行此操作的方法。
仅更改数字的批量重命名也可能有用。例如从Apple3.sh
和Banana3.sh
到Apple4.sh
和Banana4.sh
答案1
您可以使用基于 Perl 的rename
命令(可通过安装重命名包), 前任。:
将句点前的非空数字序列替换为空
$ rename -n 's/(\d+)(?=\.)//' *.sh rename(Apple1.sh, Apple.sh) rename(Banana2.sh, Banana.sh)
在句点前增加非空数字序列
$ rename -n 's/(\d+)(?=\.)/$1+2/e' *.sh rename(Apple1.sh, Apple3.sh) rename(Banana2.sh, Banana4.sh)
该-n
选项用于测试 - 当您想要实际重命名文件时请将其删除。