Bash脚本复制n个文件并按顺序重命名
我有一个模板文件,用于将PBS作业提交到服务器。我需要制作n份此模板的副本。最后,我想输入以下命令或类似命令:Bash脚本复制n个文件并按顺序重命名,bash,shell,rename,batch-rename,Bash,Shell,Rename,Batch Rename,我有一个模板文件,用于将PBS作业提交到服务器。我需要制作n份此模板的副本。最后,我想输入以下命令或类似命令: copy n pbs_template 我希望将新创建的重复文件命名为: pbs_template_1 pbs_template_2 pbs_template_3 pbs_template_4 pbs_template_n.... 以下是我到目前为止得到的 function copy() { INPUT=pbs_template number=$1 shif
copy n pbs_template
我希望将新创建的重复文件命名为:
pbs_template_1
pbs_template_2
pbs_template_3
pbs_template_4
pbs_template_n....
以下是我到目前为止得到的
function copy() {
INPUT=pbs_template
number=$1
shift
for n in $(seq $number); do
cp "$INPUT" "$INPUT"
done
}
显然,我需要指定输出的名称(否则会出现以下错误
cp:pbs\u模板和pbs\u模板是相同的(未复制)
),但如何使它们按顺序编号n次?尝试类似的方法
function duplicate () {
for i in $(seq 1 $2)
do
cp $1 "$1_$i"
echo "Made copy '$1_$i'"
done
}
您这样称呼它
duplicate foo.txt 10
。它将创建10个foo.txt
副本,每个副本都带有数字后缀。在此调用中,$1
将是foo.txt
,$2
将是10
试试这样的东西
function duplicate () {
for i in $(seq 1 $2)
do
cp $1 "$1_$i"
echo "Made copy '$1_$i'"
done
}
您这样称呼它
duplicate foo.txt 10
。它将创建10个foo.txt
副本,每个副本都带有数字后缀。在此调用中,$1
将是foo.txt
,$2
将是10
把你的陈述改成这样
cp -p "$INPUT" "$INPUT"_${n}
这里我使用了-p
开关来保留文件的属性。
如果不需要,则忽略-p
开关
希望这能有所帮助。把你的话改成这样
cp -p "$INPUT" "$INPUT"_${n}
这里我使用了-p
开关来保留文件的属性。
如果不需要,则忽略-p
开关
希望这能有所帮助。也许可以去掉讨厌的
回声,或者至少让它打印成标准错误。当然可以。这是一份粗糙的文档,可以帮助OP了解发生了什么。可以去掉讨厌的echo
,或者至少把它打印成标准错误。当然可以。这是帮助OP了解情况的粗略文档。