Bash脚本复制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

我有一个模板文件,用于将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
    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了解情况的粗略文档。