在shell脚本中重命名多个文件

时间:2013-05-08 13:35:51

标签: bash shell rename sh

在shell中重命名多个文件

我在目录中有3个文件

abc.tar.gz
abc2.tar.gz
abc3.tar.gz

使用此命令:

rename abc abc.part abc*.tar.gz

将它们转换为

abc.part.tar.gz
abc.part2.tar.gz
abc.part3.tar.gz

之后我又添加了3个文件..

abc.tar.gz
abc2.tar.gz
abc3.tar.gz

当我解雇时重命名为abc abc.part abc * .tar.gz

它将重命名所有6个文件,因此最终输出为

abc.part.tar.gz
abc.part.part2.tar.gz
abc.part.part3.tar.gz
abc.part.part.tar.gz
abc.part2.tar.gz
abc.part3.tar.gz

我只想防止多次重命名......我的rename命令应该是什么?

意味着我的最终输出应该低于,无论我多长时间重命名命令。 这里的文件数量是DYNAMIC ..可能是3,4 ...或者其他...所以不能静态添加3或某些数字!!

abc.part.tar.gz
abc.part2.tar.gz
abc.part3.tar.gz

2 个答案:

答案 0 :(得分:1)

作为重命名的最后一个参数,请使用:

abc{,2,3}.tar.gz

答案 1 :(得分:0)

创建以下“ChangeExt”脚本:

#!/bin/bash
if [ $# -lt 2 ]; then 
   echo "$0 NEWEXT FILENAME.." 
   exit 1
fi

$newext=$1
shift

for a in $* 
do
  mv $a "`basename $a`.$newext"
  echo "$a to `basename $a`.$newext"
done