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

조회수 5677회

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

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

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으로 압축을 할 수 있을까요..

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 자문자답합니다...

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

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

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

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)