bash shell을 사용할 때 커맨드라인에서 괄호확장을 적절하게 사용할 경우 타이핑이 확 줄어서 상당히 편리하다.






지정 문자열 반복

중괄호 안에 반복할 문자열을 콤마(,)로 구분해서 지정하는 방법

// YYYYMMDD.dat 형태로 날짜별로 .dat 파일이 하나씩 있는 디렉토리라고 가정


// 2015년 1월, 3월, 6월 파일 리스트 출력

ls -al 2015{01,03,06}*.dat

// 위 명령어는 아래와 같음

ls -al 201501*.dat

ls -al 201503*.dat

ls -al 201506*.dat


// 문자도 가능함

ls -al *.{jpg,jpeg,png}

// 위 명령어는 아래와 같음

ls -al *.jpg

ls -al *.jpeg

ls -al *.png




구간 지정

중괄호 안에 숫자나 문자의 구간을 {START..END} 형태로 지정가능

// YYYYMMDD.dat 형태로 날짜별로 .dat 파일이 하나씩 있는 디렉토리라고 가정


// 2015년 5월 1일부터 5월 5일까지 리스트 출력

ls -al 201505{01..05}.dat

// 위 명령어의 결과 리스트는 아래와 같음

20150501.dat

20150502.dat

20150503.dat

20150504.dat

20150505.dat


// 증가값 지정도 가능함

// 아래는 2015년 5월 1일부터 31일까지 10일씩 증가시킨 파일 리스트 출력

ls -al 201505{01..31..10}.dat

// 위 명령어의 결과 리스트는 아래와 같음

20150501.dat

20150511.dat

20150521.dat

20150531.dat




확장 연결

중첩 반복문을 구성한다고 생각하면 됨

// YYYYMMDD.dat 형태로 날짜별로 .dat 파일이 하나씩 있는 디렉토리라고 가정


// 2015년 4월,5월 각각 1일부터 30일까지 10일씩 증가시킨 파일 리스트 출력

ls -al 2015{04,05}{01..30..10}.dat

// 위 명령어의 결과 리스트는 아래와 같음

20150401.dat

20150411.dat

20150421.dat

20150501.dat

20150511.dat

20150521.dat




leading zeros

printf()의 %03d 같은 형태로 leading zeros 지정 가능

// data001 ~ data100 까지의 파일 생성

touch data{001..100}


// 확인 겸 테스트

ls -al data{001..030..10}

// 위 명령어의 결과 리스트는 아래와 같음

data001

data011

data021




null 값으로 반복

{} 안에 빈 칸 다음에 , 를 넣으면 앞의 문자열을 반복하게 됨

// 테스트

echo abc{,}

// 출력은 아래와 같음

abc abc

 

// 이걸 이용하기 가장 좋은 케이스가 특정 파일에 확장자를 붙여 임시로 백업파일을 만드는 경우임

// 가장 많이 사용했고 유용하다고 생각되는 기능

mv /path/to/fucking_long_file.dat{,.bak}

// 위 명령어는 아래와 동일함

mv /path/to/fucking_long_file.dat /path/to/fucking_long_file.dat.bak












.



Posted by bloodguy
,