Gabriel
Gabriel

Reputation: 42329

bash script to duplicate file in place changing the name

This is a quite simple script I would assume but my bash skills are non-existent.

I have a file named file_name_01.txt and I need to generate a number N of files identical to this one (ie: duplicates) but changing the names so the endings are in ascending order. The resulting files will be named like so:

file_name_02.txt
file_name_03.txt
...
file_name_09.txt
file_name_10.txt
...
file_name_N.txt

How can I generate such a script?

Upvotes: 1

Views: 81

Answers (2)

iruvar
iruvar

Reputation: 23364

Using xargs

printf "%s\0" file_name_{02..11}.txt | xargs -0 -L 1 -I {} cp file_name_01.txt {}

Upvotes: 1

bishop
bishop

Reputation: 39414

How about:

for i in {2..20}; do cp file_name_01.txt $(printf 'file_name_%02d.txt' $i); done

Replace "20" with whatever your N value is. That command is equivalent to:

cp file_name_01.txt file_name_02.txt
cp file_name_01.txt file_name_03.txt
cp file_name_01.txt file_name_04.txt
cp file_name_01.txt file_name_05.txt
cp file_name_01.txt file_name_06.txt
cp file_name_01.txt file_name_07.txt
cp file_name_01.txt file_name_08.txt
cp file_name_01.txt file_name_09.txt
cp file_name_01.txt file_name_10.txt
cp file_name_01.txt file_name_11.txt
cp file_name_01.txt file_name_12.txt
cp file_name_01.txt file_name_13.txt
cp file_name_01.txt file_name_14.txt
cp file_name_01.txt file_name_15.txt
cp file_name_01.txt file_name_16.txt
cp file_name_01.txt file_name_17.txt
cp file_name_01.txt file_name_18.txt
cp file_name_01.txt file_name_19.txt
cp file_name_01.txt file_name_20.txt

Upvotes: 1

Related Questions