【问题标题】:rename multiple files in shell script重命名shell脚本中的多个文件
【发布时间】:2013-05-02 18:32:21
【问题描述】:

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

【问题讨论】:

标签: bash shell rename sh


【解决方案1】:

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

abc{,2,3}.tar.gz

【讨论】:

  • 如果有更多数字我该怎么办?你能告诉我一些动态吗?
  • 您也可以使用abc{,[23]}.tar.gzabc{,[0-9]}{,[0-9]}.tar.gz
【解决方案2】:

创建以下“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

【讨论】:

    猜你喜欢
    • 2016-03-14
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 2018-06-09
    • 1970-01-01
    • 2014-05-01
    • 2011-06-19
    • 2012-11-05
    相关资源
    最近更新 更多