Bash 확장을 사용하여 반복적으로 디렉터리 및 파일 생성

Bash 확장을 사용하여 반복적으로 디렉터리 및 파일 생성

그래서 방금 bash 확장에 대해 배웠습니다...멋지네요 :) 이제 내년을 위한 좋은 계획을 세우고 싶습니다(예를 들어).

폴더를 생성하고 각 폴더에 일부 파일을 한 번에 생성하는 방법을 모르겠습니다... 이것이 가능합니까, 아니면 각 디렉토리로 이동하여 모든 것을 수동으로 반복해야 합니까?

sean@COMMODORE:~$ mkdir plans && cd plans && mkdir 2021-CW{01..52}
sean@COMMODORE:~/plans$ ls
2021-CW01  2021-CW05  2021-CW09  2021-CW13  2021-CW17  2021-CW21  2021-CW25  2021-CW29  2021-CW33  2021-CW37  2021-CW41  2021-CW45  2021-CW49
2021-CW02  2021-CW06  2021-CW10  2021-CW14  2021-CW18  2021-CW22  2021-CW26  2021-CW30  2021-CW34  2021-CW38  2021-CW42  2021-CW46  2021-CW50
2021-CW03  2021-CW07  2021-CW11  2021-CW15  2021-CW19  2021-CW23  2021-CW27  2021-CW31  2021-CW35  2021-CW39  2021-CW43  2021-CW47  2021-CW51
2021-CW04  2021-CW08  2021-CW12  2021-CW16  2021-CW20  2021-CW24  2021-CW28  2021-CW32  2021-CW36  2021-CW40  2021-CW44  2021-CW48  2021-CW52
sean@COMMODORE:~/plans$ cd 2021-CW01
sean@COMMODORE:~/plans/2021-CW01$ touch {work,sport,shopping,music}.txt
sean@COMMODORE:~/plans/2021-CW01$ ls
music.txt  shopping.txt  sport.txt  work.txt
sean@COMMODORE:~/plans/2021-CW01$

답변1

mkdir첫 번째 명령을 단일 명령으로 단순화하여 -p상위 디렉터리를 만들 수도 있습니다 .

mkdir -p plans/2021-CW{01..52}

그런 다음 하나만 사용하여 touch모든 디렉터리에 파일을 만듭니다.

touch plans/2021-CW{01..52}/{work,sport,shopping,music}.txt
$ ls plans/2021-CW*
plans/2021-CW01:
music.txt  shopping.txt  sport.txt  work.txt

plans/2021-CW02:
music.txt  shopping.txt  sport.txt  work.txt

...

plans/2021-CW52:
music.txt  shopping.txt  sport.txt  work.txt

답변2

이 작업을 수행하는 데 사용할 수 있는 스크립트를 작성했습니다.

#!/bin/bash

mkdir -p plans/2021-CW{01..52} && cd plans

for d in */
do
    if [ -d "${d}" ] ; then 
        cd ${d} ; touch {work,sport,shopping,music}.txt ; cd ..
    fi
done

관련 정보