如何在控制台中批量重命名文件名

如何在控制台中批量重命名文件名

我有大量名为“img800400_497708.307247.png”的文件,我想使用控制台将所有点(句号)更改为下划线。我该怎么做?

答案1

您可以使用rename命令相当轻松地完成此操作。唯一的问题是保留扩展名。我们首先替换所有点,然后将其替换_png.png。您显然需要将其调整为其他扩展类型。

cd /path/to/images
rename 's/\./_/g; s/_png$/.png/' *.png -vn

注意:-vn末尾的仅演示其功能。这是一个安全触发器。检查命令是否按预期执行,然后删除最后一部分。

一个超级简单的测试工具:

$ touch file.{01..10}.png
$ rename 's/\./_/g; s/_png$/.png/' *.png -vn
file.01.png renamed as file_01.png
file.02.png renamed as file_02.png
file.03.png renamed as file_03.png
file.04.png renamed as file_04.png
file.05.png renamed as file_05.png
file.06.png renamed as file_06.png
file.07.png renamed as file_07.png
file.08.png renamed as file_08.png
file.09.png renamed as file_09.png
file.10.png renamed as file_10.png

答案2

一个 bash 解决方案,删除扩展名,用下划线替换句点,然后重新添加扩展名:

for f in *.png; do g="${f%.*}"; echo mv -- "$f" "${g//./_}.png"; done

echo一旦您确定它是否有效,就可以删除。.ext如果您有多种文件类型,它可以很容易地扩展为通用扩展名,例如

for f in *.*; do g="${f%.*}"; e="${f##*.}"; echo mv -- "$f" "${g//./_}.$e"; done

相关内容