2일이 지난 디렉토리를 압축( tar
또는 gzip
) 하고 싶습니다 . zip
다음 파일이 있습니다. 각 디렉터리에는 여러 개의 하위 디렉터리와 파일이 있습니다.
Oct 21 13:01 test1
Oct 22 13:01 test2
원하는 출력:
test1.tar
test2.tar
아래 명령을 작성해 보았지만 작동하지 않습니다.
find . -type d -maxdepth 1 -mtime +2 \! -name '*.gz' -exec gzip {} \;
다음 오류가 발생합니다.
gzip:test1.tar is a directory -- ignored
gzip:test2.tar is a directory -- ignored
답변1
gzip은 파일만 압축할 수 있으므로 gzip 압축 전에 먼저 디렉터리를 tar해야 합니다.
당신이 원하는 것은 tar
"z", "z" 압축과 함께 GNU를 사용하는 것입니다:
find . -type d -maxdepth 1 -mtime +2 \! -name '*.gz' -exec tar cfz {}.tgz {} \;
댓글 후 수정:
나는 이것이 일반적인 상황에서 중복된다는 것을 알지 못했습니다 \! -name '*.gz'
... 디렉토리 이름이 .gz
.
find . -type d -maxdepth 1 -mtime +2 -exec tar cfz {}.tgz {} \;
답변2
사용tar
보관 유틸리티:
find . -type d -maxdepth 1 -mtime +2 ! -name '*.gz' -exec tar -czvf old_dirs.gz '{}' +;
-exec command {} +
이-exec
작업의 변형은 선택한 파일에 대해 지정된 명령을 실행하지만 명령줄은 선택한 각 파일 이름을 끝에 추가하여 작성됩니다.훨씬 적은 일치하는 파일 수보다.