Bash脚本可以复制n个文件并按顺序重命名

时间:2017-03-16 05:26:57

标签: 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
    shift

    for n in $(seq $number); do
     cp "$INPUT" "$INPUT"
    done
}

显然我需要指定输出的名称(否则我会收到以下错误cp: pbs_template and pbs_template are identical (not copied)),但是如何使它们按顺序 n 次数?

2 个答案:

答案 0 :(得分:1)

尝试这样的事情?

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

答案 1 :(得分:0)

只需将您的陈述改为此

即可
cp -p "$INPUT" "$INPUT"_${n}

这里我使用了-p开关来保存文件的属性。 如果您不想要,请忽略-p切换。

希望有所帮助。