Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

creating multiple copies of a file in bash with a script

Tags:

linux

bash

shell

I am starting to learn how to use bash shell commands and scripting in Linux.

I want to create a script that will take a source file, and create a chosen number of named copies.

for example, I have the source as testFile, and I choose 15 copies, so it creates testFile1, 2, 3 ... 14, 15 in the same location.

To try and achieve this I have tried to make the following command:

for LABEL in {$X..$Y}; do cp $INPUT $INPUT$LABEL; done

However, instead of creating files from X to Y, it makes just one file with (for example) {1..5} appended instead of files 1, 2, 3, 4 and 5

How can I change it so it properly uses the variable as a number for the loop?

like image 214
Tom Bennett Avatar asked Oct 25 '13 19:10

Tom Bennett


Video Answer


1 Answers

The brace expansion mechanism is a bit limited; it doesn't work with variables, only literals.

For what you want, you probably have the seq command, and could write:

INPUT=testFile
for num in $(seq 1 15)
do
    cp "$INPUT" "$INPUT$num"
done
like image 162
Jonathan Leffler Avatar answered Oct 23 '22 22:10

Jonathan Leffler