我在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()
考虑自动执行此操作,因为我不想在每次重命名时手动编辑脚本。任何其他方法都将受到高度欢迎。
答案 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