使用参数unix重命名多个文件

时间:2016-06-19 10:25:49

标签: unix rename

我在rename.sh下面有一个重命名脚本。我想介绍a variable,以便在执行像./rename.sh 20151103这样的脚本时传递日期参数,以便20151103替换20140306中的for f in *.CDR*; do echo mv "$f" "${f/-20140306/-0-20140306}" done 脚本。

View v = mListView.getChildAt()

考虑自动执行此操作,因为我不想在每次重命名时手动编辑脚本。任何其他方法都将受到高度欢迎。

2 个答案:

答案 0 :(得分:0)

这是您可以考虑的方法之一:

#!/bin/bash

input=$1

for f in *.CDR*; do
  echo mv "$f" "${f/-$input/-0-$input}"
done

答案 1 :(得分:0)

#!/bin/bash

pattern="$1"

for f in *.CDR*; do
    echo mv "$f" "${f/-${pattern}/-0-${pattern}}"
done

说明:

  • #! - 行表示我们将其作为bash脚本运行。

  • 该脚本将使用命令行中传递给它的参数填充变量$1$2等。这些被称为位置参数$0通常包含脚本的名称)。

  • 我们选择$1,因为我们知道应该包含我们要替换的模式,并将其分配给变量$pattern。在更复杂的脚本中,这里是我们处理命令行开关的地方(getopts,但这是另一天的答案)。

  • 我们引用$1,因为。 (引用用户输入是一种很好的做法,只是为了确保没有像*这样的shell-globbing字符被扩展。)

  • 其余的是您之前的脚本,但字符20140306替换为${pattern}。我在这里使用的是${pattern}而不是$pattern,只是为了便于阅读。一般情况下,如果您插入类似${a}的字符串,则需要使用$a而不是"${a}nospaceafter"

然后它应该只是在测试之前使脚本可执行:

$ chmod +x rename.sh