2021-10-30
find 명령어는 리눅스 내에서 원하는 파일을 찾을 때 사용하는 명령어이다. 단독으로 쓰이는 경우도 있으나 보통은 find 이후에 다음 작업을 하기 위해서 사용되는 경우가 많이 있다. 오늘은 그중에서 find 명령어 후에 바로 압축을 진행하는 방법을 알아보자.
- 예제
바로 코드로 알아보자.
find -name '파일명*' -exec tar -cvfz 파일명.tar.gz {} +;
우선 find -name '파일명*' 은 파일명으로 시작하는 모든 파일을 찾는다.
이후 find로 찾은 파일(결괏값)을 가지고 -exec(실행) 명령어가 , tar 명령어의 옵션 값 cvfz(c : 새로운 묶음으로 만든다. / v : 과정을 보여준다. / f : 묶음 파일의 이름을 정한다. / z : gzip 형식으로 압축) 기준으로 파일들을 묶으면 해당 파일은 파일명. tar.gz로 묶인다.
압축 형식 참고 : https://seeminglyjs.tistory.com/366
{ } 중괄호 는 find -name '파일명*' 명령어의 실행 결과인 '파일명*' 파일들이 tar 명령으로 실행된다는 의미이다.
즉 -exec 명령어의 앞에 오는 find 명령어의 결괏값이 매개 값으로 들어가는 영역이라고 생각하면 된다.
구분자 더하기 기호 ' + ' 를 사용하면 모든 표현식의 결과가 연결되어 전체적으로 한 번만 실행되는 -exec 명령에 전달된다.
- 팁( 구분자 + 와 \; 의 차이)
여담으로 제일 끝에 구분자는 + 와 \; 이렇게 두 가지로 나누어져 있는데 성능 면에서 + 가 더 좋다고 알려져 있다.
왜냐하면 \; 를 마지막 구분자로 사용하면 각 파일에 대해 별도의 프로세스를 실행하게 되는데 이로 인해, RAM과 처리 시간 모두에서 심각한 페널티가 발생할 수 있기 때문이다.
메인 이미지 출처: Photo by Yasamine June on Unsplash