Featured image of post Batch file creation trough bash

Batch file creation trough bash

Bash script to create multiple files from values in a list

The problem

Sometimes you need to create multiple config files for a project or want to test different parameters on a template. If you need to automate the creation of files while changing the content, Bash is there for you. Given three lists, you can create files with permutations of the content of those lists. Let’s see an example:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
list_x=(1 2 3 4 5) # this one set also the subfolder
list_y=(1 2 3 4 5)
list_z=(1 2 3 4 5)

size_y="${#list_y[@]}"
size_z="${#list_z[@]}"
size=$((size_y*size_z-1))
grid_name_seq=($(seq -w 0 $size)) # second () loads as array

grid_index=0
for x_value in "${list_x[@]}"; do
    
    grid_folder=grid"${grid_name_seq[$grid_index]}"
    mkdir -p "$grid_folder"
    
    y_index=0
    index=0 # corresponds to y-z plane
    for y_value in "${list_y[@]}"; do
        
        z_index=0
        for z_value in "${list_z[@]}"; do
            
            # the filename is: gridXY/gridFileXY.yaml
            fileHere="$grid_folder"
            fileHere="$fileHere"/gridFile
            fileHere="$fileHere""${grid_name_seq[$index]}"
            fileHere="$fileHere".yaml
            rm $fileHere

            echo "x_value: $x_value" >> "$fileHere" # x eman
            echo "y_value: $y_value" >> "$fileHere" # y part
            echo "z_value: $z_value" >> "$fileHere" # z child
            z_index=$((z_index+1))
            index=$((z_index+y_index))
        done
        
        y_index=$((y_index+size_z))
    done

    grid_index=$((grid_index+1))
done

Let’s run it

You can see for yourself the amount of files created using the tree command in Bash.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
.
β”œβ”€β”€ extra.md
β”œβ”€β”€ grid00
β”‚Β Β  β”œβ”€β”€ gridFile00.yaml
β”‚Β Β  β”œβ”€β”€ gridFile01.yaml
β”‚Β Β  β”œβ”€β”€ gridFile02.yaml
β”‚Β Β  β”œβ”€β”€ gridFile03.yaml
β”‚Β Β  β”œβ”€β”€ gridFile04.yaml
β”‚Β Β  β”œβ”€β”€ gridFile05.yaml
β”‚Β Β  β”œβ”€β”€ gridFile06.yaml
β”‚Β Β  β”œβ”€β”€ gridFile07.yaml
β”‚Β Β  β”œβ”€β”€ gridFile08.yaml
β”‚Β Β  β”œβ”€β”€ gridFile09.yaml
β”‚Β Β  β”œβ”€β”€ gridFile10.yaml
β”‚Β Β  β”œβ”€β”€ gridFile11.yaml
β”‚Β Β  β”œβ”€β”€ gridFile12.yaml
β”‚Β Β  β”œβ”€β”€ gridFile13.yaml
β”‚Β Β  β”œβ”€β”€ gridFile14.yaml
β”‚Β Β  β”œβ”€β”€ gridFile15.yaml
β”‚Β Β  β”œβ”€β”€ gridFile16.yaml
β”‚Β Β  β”œβ”€β”€ gridFile17.yaml
β”‚Β Β  β”œβ”€β”€ gridFile18.yaml
β”‚Β Β  β”œβ”€β”€ gridFile19.yaml
β”‚Β Β  β”œβ”€β”€ gridFile20.yaml
β”‚Β Β  β”œβ”€β”€ gridFile21.yaml
β”‚Β Β  β”œβ”€β”€ gridFile22.yaml
β”‚Β Β  β”œβ”€β”€ gridFile23.yaml
β”‚Β Β  └── gridFile24.yaml
β”œβ”€β”€ grid01
β”‚Β Β  β”œβ”€β”€ gridFile00.yaml
β”‚Β Β  β”œβ”€β”€ gridFile01.yaml
β”‚Β Β  β”œβ”€β”€ gridFile02.yaml
β”‚Β Β  β”œβ”€β”€ gridFile03.yaml
β”‚Β Β  β”œβ”€β”€ gridFile04.yaml
β”‚Β Β  β”œβ”€β”€ gridFile05.yaml
β”‚Β Β  β”œβ”€β”€ gridFile06.yaml
β”‚Β Β  β”œβ”€β”€ gridFile07.yaml
β”‚Β Β  β”œβ”€β”€ gridFile08.yaml
β”‚Β Β  β”œβ”€β”€ gridFile09.yaml
β”‚Β Β  β”œβ”€β”€ gridFile10.yaml
β”‚Β Β  β”œβ”€β”€ gridFile11.yaml
β”‚Β Β  β”œβ”€β”€ gridFile12.yaml
β”‚Β Β  β”œβ”€β”€ gridFile13.yaml
β”‚Β Β  β”œβ”€β”€ gridFile14.yaml
β”‚Β Β  β”œβ”€β”€ gridFile15.yaml
β”‚Β Β  β”œβ”€β”€ gridFile16.yaml
β”‚Β Β  β”œβ”€β”€ gridFile17.yaml
β”‚Β Β  β”œβ”€β”€ gridFile18.yaml
β”‚Β Β  β”œβ”€β”€ gridFile19.yaml
β”‚Β Β  β”œβ”€β”€ gridFile20.yaml
β”‚Β Β  β”œβ”€β”€ gridFile21.yaml
β”‚Β Β  β”œβ”€β”€ gridFile22.yaml
β”‚Β Β  β”œβ”€β”€ gridFile23.yaml
β”‚Β Β  └── gridFile24.yaml
β”œβ”€β”€ grid02
β”‚Β Β  β”œβ”€β”€ gridFile00.yaml
β”‚Β Β  β”œβ”€β”€ gridFile01.yaml
β”‚Β Β  β”œβ”€β”€ gridFile02.yaml
β”‚Β Β  β”œβ”€β”€ gridFile03.yaml
β”‚Β Β  β”œβ”€β”€ gridFile04.yaml
β”‚Β Β  β”œβ”€β”€ gridFile05.yaml
β”‚Β Β  β”œβ”€β”€ gridFile06.yaml
β”‚Β Β  β”œβ”€β”€ gridFile07.yaml
β”‚Β Β  β”œβ”€β”€ gridFile08.yaml
β”‚Β Β  β”œβ”€β”€ gridFile09.yaml
β”‚Β Β  β”œβ”€β”€ gridFile10.yaml
β”‚Β Β  β”œβ”€β”€ gridFile11.yaml
β”‚Β Β  β”œβ”€β”€ gridFile12.yaml
β”‚Β Β  β”œβ”€β”€ gridFile13.yaml
β”‚Β Β  β”œβ”€β”€ gridFile14.yaml
β”‚Β Β  β”œβ”€β”€ gridFile15.yaml
β”‚Β Β  β”œβ”€β”€ gridFile16.yaml
β”‚Β Β  β”œβ”€β”€ gridFile17.yaml
β”‚Β Β  β”œβ”€β”€ gridFile18.yaml
β”‚Β Β  β”œβ”€β”€ gridFile19.yaml
β”‚Β Β  β”œβ”€β”€ gridFile20.yaml
β”‚Β Β  β”œβ”€β”€ gridFile21.yaml
β”‚Β Β  β”œβ”€β”€ gridFile22.yaml
β”‚Β Β  β”œβ”€β”€ gridFile23.yaml
β”‚Β Β  └── gridFile24.yaml
β”œβ”€β”€ grid03
β”‚Β Β  β”œβ”€β”€ gridFile00.yaml
β”‚Β Β  β”œβ”€β”€ gridFile01.yaml
β”‚Β Β  β”œβ”€β”€ gridFile02.yaml
β”‚Β Β  β”œβ”€β”€ gridFile03.yaml
β”‚Β Β  β”œβ”€β”€ gridFile04.yaml
β”‚Β Β  β”œβ”€β”€ gridFile05.yaml
β”‚Β Β  β”œβ”€β”€ gridFile06.yaml
β”‚Β Β  β”œβ”€β”€ gridFile07.yaml
β”‚Β Β  β”œβ”€β”€ gridFile08.yaml
β”‚Β Β  β”œβ”€β”€ gridFile09.yaml
β”‚Β Β  β”œβ”€β”€ gridFile10.yaml
β”‚Β Β  β”œβ”€β”€ gridFile11.yaml
β”‚Β Β  β”œβ”€β”€ gridFile12.yaml
β”‚Β Β  β”œβ”€β”€ gridFile13.yaml
β”‚Β Β  β”œβ”€β”€ gridFile14.yaml
β”‚Β Β  β”œβ”€β”€ gridFile15.yaml
β”‚Β Β  β”œβ”€β”€ gridFile16.yaml
β”‚Β Β  β”œβ”€β”€ gridFile17.yaml
β”‚Β Β  β”œβ”€β”€ gridFile18.yaml
β”‚Β Β  β”œβ”€β”€ gridFile19.yaml
β”‚Β Β  β”œβ”€β”€ gridFile20.yaml
β”‚Β Β  β”œβ”€β”€ gridFile21.yaml
β”‚Β Β  β”œβ”€β”€ gridFile22.yaml
β”‚Β Β  β”œβ”€β”€ gridFile23.yaml
β”‚Β Β  └── gridFile24.yaml
β”œβ”€β”€ grid04
β”‚Β Β  β”œβ”€β”€ gridFile00.yaml
β”‚Β Β  β”œβ”€β”€ gridFile01.yaml
β”‚Β Β  β”œβ”€β”€ gridFile02.yaml
β”‚Β Β  β”œβ”€β”€ gridFile03.yaml
β”‚Β Β  β”œβ”€β”€ gridFile04.yaml
β”‚Β Β  β”œβ”€β”€ gridFile05.yaml
β”‚Β Β  β”œβ”€β”€ gridFile06.yaml
β”‚Β Β  β”œβ”€β”€ gridFile07.yaml
β”‚Β Β  β”œβ”€β”€ gridFile08.yaml
β”‚Β Β  β”œβ”€β”€ gridFile09.yaml
β”‚Β Β  β”œβ”€β”€ gridFile10.yaml
β”‚Β Β  β”œβ”€β”€ gridFile11.yaml
β”‚Β Β  β”œβ”€β”€ gridFile12.yaml
β”‚Β Β  β”œβ”€β”€ gridFile13.yaml
β”‚Β Β  β”œβ”€β”€ gridFile14.yaml
β”‚Β Β  β”œβ”€β”€ gridFile15.yaml
β”‚Β Β  β”œβ”€β”€ gridFile16.yaml
β”‚Β Β  β”œβ”€β”€ gridFile17.yaml
β”‚Β Β  β”œβ”€β”€ gridFile18.yaml
β”‚Β Β  β”œβ”€β”€ gridFile19.yaml
β”‚Β Β  β”œβ”€β”€ gridFile20.yaml
β”‚Β Β  β”œβ”€β”€ gridFile21.yaml
β”‚Β Β  β”œβ”€β”€ gridFile22.yaml
β”‚Β Β  β”œβ”€β”€ gridFile23.yaml
β”‚Β Β  └── gridFile24.yaml
└── gridFileCreator.sh

5 directories, 127 files

In this video, we can peek at the content of the files:

With a few lines and one execution, it was possible to create 125 files with unique parameters, all in 5 separate folders.


Invitame un cafΓ© en cafecito.app

Built with Hugo
Theme Stack designed by Jimmy