2

重命名多个文件...在 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
4

2 回答 2

1

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

abc{,2,3}.tar.gz
于 2013-05-08T13:43:22.280 回答
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
于 2013-05-08T13:55:36.407 回答