如何从多个文件名中删除/添加/替换数字?

如何从多个文件名中删除/添加/替换数字?

如何从多个文件名中删除和添加数字?

例如,我想将文件名Apple1.sh和 名称更改Banana2.shApple.shBanana.sh

我已经在谷歌上搜索了一段时间,但没有找到确切的答案

发现了这个:

for i in *.sh; do
  echo "$i" | sed 's/^[0-9_ ]*//'
done

但它仅显示输出并且不会改变文件名。

我还需要向重命名的文件名添加数字(例如 3),这样它们就变成了Apple3.sh,但Banana3.sh仍然找不到执行此操作的方法。

仅更改数字的批量重命名也可能有用。例如从Apple3.shBanana3.shApple4.shBanana4.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选项用于测试 - 当您想要实际重命名文件时请将其删除。

相关内容