![如何从多个文件名中删除/添加/替换数字?](https://linux22.com/image/1193334/%E5%A6%82%E4%BD%95%E4%BB%8E%E5%A4%9A%E4%B8%AA%E6%96%87%E4%BB%B6%E5%90%8D%E4%B8%AD%E5%88%A0%E9%99%A4%2F%E6%B7%BB%E5%8A%A0%2F%E6%9B%BF%E6%8D%A2%E6%95%B0%E5%AD%97%EF%BC%9F.png)
如何从多个文件名中删除和添加数字?
例如,我想将文件名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
选项用于测试 - 当您想要实际重命名文件时请将其删除。