더북(TheBook)

4.4.3 find로 파일 모으기

find 명령은 파일 시스템을 검색해 주어진 규칙에 맞는 파일들을 찾아내서 이 파일들의 이름과 위치를 표준 출력(stdout, standard output)으로 출력한다. 이때 표준 출력은 일반적으로 화면 출력을 의미한다. 그런데 이 출력 메시지는 tar 같은 다른 명령으로 쉽게 리다이렉션될 수 있다. 그러고 나서 tar가 해당 파일들을 아카이빙할 수 있다.

설명할 예의 배경은 다음과 같다. 여러분의 서버는 아주 많은 .mp4 비디오 파일을 제공하는 웹 사이트를 호스팅하고 있다. 이 파일들은 /var/www/html/ 아래의 여러 디렉터리에 흩어져 있어서 파일을 일일이 찾아내기가 쉽지 않다. 이때 다음 명령 하나로 /var/www/html/ 디렉터리를 검색해 확장자가 .mp4인 파일들을 찾아내고, 파일을 찾으면 tar 명령을 실행해 이 파일들을 videos.tar 아카이브에 추가할 수 있다(tar-r 옵션을 주면 아카이브를 덮어쓰지 않고 기존 아카이브에 내용을 추가한다).

# find /var/www/html/ -iname "*.mp4" -exec tar \ ← -iname 플래그는 대문자와 소문자를 모두 매칭하고 -name 플래그는 대소문자를 구분해 매칭한다
-rvf videos.tar {} \; ← {} 기호는 find 명령으로 찾아낸 모든 파일에 tar 명령을 적용한다

이때 find 명령은 sudo로 실행하는 편이 좋다. 시스템 디렉터리에 있는 파일들을 검색하기 때문에 일반 사용자 권한으로 읽지 못하는, 제한된 권한을 가진 일부 파일은 find가 제대로 검색할 수 없다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.