2017-06-22 28 views
1

我有十亿个文件的目录中,他们都有类似下面的名称:变化后缀,前缀数十亿个文件的目录中的

split-00342964 
split-00342965  
split-00342966 
split-00342967 

我想

  1. 删除前缀split-00
  2. 添加到所有文件中,扩展名为.png。

我试图与

rename 's/^split-00//' split-00* 

,但我得到bash: /usr/bin/rename: Argument list too long

结果。

我正在寻找一个解决方案,这也将扩展,这意味着它将花费最少的时间,进行上述重命名任务。

+1

您可以通过循环绕过“参数列表太长”,例如'为f in *;重命名's/^ split-00 //'$ f;完成' – roryrjb

+0

你试过的命令只会删除前缀,不会添加扩展名...我认为find + rename可能效果最好...尝试'find -type f -name'split-00 *'-exec rename - n's/split-00(。*)/ $ 1.png /'{} +'...'-n'选项用于空运行,因此先尝试使用少量文件..如果您需要添加扩展名用'split-00'试试's /(?: split-00)?(。*)/ $ 1.png /' – Sundeep

+0

我想也试试这里发布的sed命令,但立即删除 – Donia

回答

1

您可以使用下面的命令来实现这一目标,

for f in split-00*; do 
    mv $f $(echo $f|awk '{print substr($0,9) ".png"}'); 
done