Shell script (빈 디렉토리에 .gitkeep파일 생성하기

2024. 11. 14. 16:04디바이스 드라이버

<문제 설명>

1. 파라미터로 대상 디렉토리를 입력받기

2. 대상 디렉토리의 하위 디렉토리 중에 빈 디렉토리 찾아내기

3. 비어있는 디렉토리에 .gitkeep라는 빈 파일 생성하기

4. 하위 디렉토리 안에 또 다른 하위 디렉토리가 있는 경우도 고려

 

Git에서 commit을 작성하기 위해서는 반드시 디렉토리에 파일이 존재해야한다.

a라는 디렉토리위에 위와같은 구조로 하위 디렉토리를 형성하였다. 파일이 없는 하위디렉토리인 c,d,e,f,g로 인해 commit을 작성할 수 없으므로 반드시 파일을 생성해야한다.

 

<문제 풀이>

filelist=`ls -A $1`은 숨김파일까지 포함해서 모든 파일 리스트가 filelist에 들어간다. 위 예시로 보면 a 디렉토리 기준에선 $filelist는 b,c,d이다. 

num=`find $1/$file | wc -l`은 첫 번째 인자의 하위 디렉토리 안에 있는 디렉토리의 수(자기자신도 포함)를 num이라는 변수에 넣는 명령어이다.

 

위와 같이 a의 하위 디렉토리 b,c,d에서 자기자신을 포함한 디렉토리 수를 나타낸 것이다. b의 밑에는 e,f,g가 있기 때문에 4이고, c와d는 자기 자신밖에 없기 때문에 1이다.

num이 1이라는 것은 자기자신 밑에 파일 또는 디렉토리가 없음을 뜻하기 때문에 만약 num이 1일 때 바로 그 디렉토리 안에 크기가 0인 .gitkeep이라는 파일을 생성해준다, (touch 명령어)

만약 num이 1이 아니면 ( 하위 파일이 존재) 해당 디렉토리를 인수로 다시 ADDFile 함수를 실행시킨다.

 

결과는 위와 같이 c,d,e,f,g 밑에 .gitkeep이라는 파일이 생성된다.