리눅스 쉘 스크립트에서 find 사용 시 변수값을 가지고 찾는 방법..


리눅스에서 쉘 스크립트를 작성중입니다.

우선 변수명에는 날짜가 들어갑니다.

date=`/bin/date +%Y%m%d -d '1 day ago'`

date 변수에는 어제 날짜가 들어갑니다. 20161026 과 같은 양식으로요.

그럼 이 날짜를 디렉토리명으로 하는 디렉토리들을 찾아서 tar cvfz {}.tar.gz으로 압축하고자 합니다.

다만 문제가 되는 부분이 찾아야하는 디렉토리 중 _1, _2와 같이 숫자가 붙는 디렉토리들이 있습니다.

20161026, 20161026_1, 20161027, ... 이런 경우들인데 저는 아래와 같은 명령을 사용하려고 했습니다.

find /경로 -name '${date}*' -exec tar cvfzP /경로/{}.tar.gz {} \;

위 명령어를 사용해서 검색된 디렉토리들 각각을 tar.gz으로 압축하고자 합니다.

다만 이제 찾으려는 파일명에 변수를 넣으니 제대로 검색을 못하는 것 같습니다.

어떻게 검색을 해야 20161026과 20161026_1 디렉토리를 모두 찾아서 각각 디렉토리명.tar.gz으로 압축을 할 수 있을까요..

  • 2016년 10월 27일에 작성됨
    보안 분야 업무를 하고있으며, python개발을 주로 합니다.

조회수 85


1 답변


좋아요
0
싫어요
채택취소하기

자문자답합니다...

find /경로 -name "${date}*" -exec tar cvfzP /경로/{}.tar.gz {} \;

위와 같이 파일명 부분에 싱글쿼트 ' 가 아닌 더블쿼트 "로 묶어주니 나오네요..

하지만 find에 대한 결과가 딱 파일명만 출력되는게 아닌 경로명까지 나와 뒤에 tar 명령에서 에러가 나네요..

  • 2016년 10월 27일에 작성됨
    보안 분야 업무를 하고있으며, python개발을 주로 합니다.

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close