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
.
'Linux' 카테고리의 다른 글
[Linux] 스왑 메모리 사용하는 프로세스 확인 (looking for process using swap memory) (0) | 2019.03.21 |
---|---|
[Bash] Bash Script 에러발생해도 다음 스크립트 계속 실행하는 방법 (2) | 2016.11.22 |
[Linux] tar 로 여러 디렉토리에 있는 파일을 하나의 압축파일로 디렉토리 구조없이 파일만 압축하기 (0) | 2016.02.16 |
[Linux] DHCP로 네트워크 설정시 /etc/resolv.conf가 덮어써지는 현상 (0) | 2015.12.17 |
[Linux] Vim 에디터 내부에서 bash shell 사용하기 (0) | 2015.11.30 |