Linux 将后缀和前缀更改为目录中的数十亿个文件
我在一个目录中有数十亿个文件,它们的名称如下:Linux 将后缀和前缀更改为目录中的数十亿个文件,linux,bash,shell,awk,sed,Linux,Bash,Shell,Awk,Sed,我在一个目录中有数十亿个文件,它们的名称如下: split-00342964 split-00342965 split-00342966 split-00342967 我想要 删除前缀split-00的步骤 将扩展名.png添加到所有文件中 我试过了 rename 's/^split-00//' split-00* 但是我得到了bash:/usr/bin/rename:参数列表太长 结果, 我正在寻找一种解决方案,它也可以扩展,这意味着执行上述重命名任务所需的时间最少。您可以使用以下
split-00342964
split-00342965
split-00342966
split-00342967
我想要
rename 's/^split-00//' split-00*
但是我得到了bash:/usr/bin/rename:参数列表太长
结果,
我正在寻找一种解决方案,它也可以扩展,这意味着执行上述重命名任务所需的时间最少。您可以使用以下命令来实现这一点
for f in split-00*; do
mv $f $(echo $f|awk '{print substr($0,9) ".png"}');
done
你可以通过循环来绕过“参数列表太长”,例如f in*的
;请重命名's/^split-00/'$f;完成
您尝试的命令只会删除前缀,不会添加扩展名。。。我认为find+rename可能最有效。。。请尝试find-type f-name'split-00*'-exec rename-n's/split-00(.*)/$1.png/'{}+
<代码>-n选项用于干运行,因此请先尝试使用几个文件。。如果您需要使用split-00
添加扩展名而不考虑文件名,请尝试s/(?:split-00)?(*)/$1.png/
,我也想尝试此处发布的sed命令,但已立即删除