비밀번호를 사용하여 하위 디렉터리의 파일을 재귀적으로 압축하는 방법

비밀번호를 사용하여 하위 디렉터리의 파일을 재귀적으로 압축하는 방법

하위 디렉토리의 파일을 비밀번호로 재귀적으로 압축한 다음 bash 파일에서 압축되지 않은 파일을 삭제해야 합니다.

zip 파일과 기타 파일이 있습니다. zip 파일을 다시 압축하고 싶지 않습니다. 압축되지 않은 파일만 압축하고 파일 이름을 압축된 파일 이름으로 유지하고 싶습니다.

예를 들어 파일 이름이 aaa10.datzip 파일 이름 인 경우 aaa10.zip비밀번호로 압축해야 합니다.

압축한 후 압축되지 않은 파일을 삭제하고 싶습니다.

[디렉터리 구조]

dir1/aaa1.dat ... aaa10.dat
dir1/dir2/dir2_subdir1/aaa.zip, aaa.dat
dir1/dir3/dir3_subdir1/aaa1.dat ... aaa10.dat
dir1/dir3/dir3_subdir2/aaa1.dat ... aaa20.dat, aaa1.zip ... aaa10.zip
dir1/dir3/dir3_subdir2/dir3_subdir2_subdir1/aaa1.dat ... aaa20.dat, aaa1.zip ... aaa10.zip

답변1

find모든 ".dat" 파일을 찾아 압축하는 상당히 복잡한 명령을 사용하여 이 작업을 수행할 수 있습니다 . 그러나 zip 부분을 별도의 스크립트에 넣는 것이 표시하기가 훨씬 쉽습니다.

find . -name '*.dat' -exec my-script {} \;

그리고 my-script(당신의 에 있어야 함 PATH):

#!/bin/sh
zip -P my-password -m $(dirname $1)/$(basename $1 .dat).zip $1

그리고my-password물론 당신이 선택한 것은 무엇이든 상관없습니다.

관련 정보