오늘부터 150일 전까지의 디렉터리, 하위 디렉터리, 기본 디렉터리 및 하위 디렉터리의 파일을 압축하고 싶습니다.
파일 및 하위 디렉터리의 날짜에 관계없이 명령이 실행되는 디렉터리의 날짜만 고려합니다.
나는 명령을 사용했다
find . -mtime -151 | xargs zip tnsd3801_Postfeb16_7106.zip
디렉터리의 zip을 만듭니다. 하지만 오늘부터 150일 동안만 수정된 파일/하위 디렉터리의 zip 파일을 생성하고 있습니다. 누구든지 나를 도울 수 있습니까?
답변1
이 질문을 더 많이 읽을수록 내가 그것을 이해하고 있는지에 대한 확신이 점점 줄어듭니다. 나는 그것이 다음과 같다고 가정합니다: 당신은 다음과 같은 디렉토리 트리를 가지고 있습니다
. ├────dir1⋯ 140일 전에 수정되었습니다. │ ├───dir11⋯ 160일 전에 수정되었습니다. │ ├────dir12⋯ 140일 전에 수정되었습니다. │ ├────dir13⋯ (신경 쓰지 마세요.) │ ├────dir14⋯ (신경 쓰지 마세요.) │ ├────dir15. │ ├────dir16. │ ├────dir17. │ └─── ⋮ └────dir2⋯ 160일 전에 수정되었습니다. ├────dir21⋯ 140일 전에 수정되었습니다. ├────dir22⋯ 160일 전에 수정되었습니다. ├────dir23⋯ 140일 전에 수정되었습니다. ├────dir24⋯ 160일 전에 수정되었습니다. ├────dir25⋯ 140일 전에 수정되었습니다. ├────dir26⋯ 160일 전에 수정되었습니다. ├────dir27⋯ 140일 전에 수정되었습니다. └──── ⋮ ⋮
dir1
...그리고 기타 콘텐츠 안이나 아래가 아닌 안과 아래의 모든 항목( , , , , , and 안과 아래의 모든 항목 포함)과 , , 안과 아래의 모든 항목을 보관하려고 합니다 . (지난 150일 동안 수정된 디렉터리 안팎의 모든 내용을 원하기 때문입니다.)dir11
dir12
dir13
dir14
dir15
dir16
dir17
dir21
dir23
dir25
dir27
dir2
당신은 이것을 할 수 있습니다
find . -type d -mtime -151 -prune -print0 | xargs -0 zip -r tnsd3801_Postfeb16_7106.zip
find . -type d
분명히 현재 디렉토리 안팎에서 디렉토리를 찾습니다.find … -mtime -151
아시다시피find
수정 날짜가 150일 이상인 객체로 제한됩니다.귀하의 질문을 읽었을 때 가장 먼저 든 생각은 이었습니다
-mtime -150
. 그러다가 당신이 그것을 시도하는 것을 보고 '-mtime -151
그래, 말이 된다'고 생각했습니다. 하지만 시도해 보고 싶을 수도 있습니다.find . -type d -mtime -150 > dirs150 find . -type d -mtime -151 > dirs151 diff dirs150 dirs151
당신이 원하는 것을 결정합니다.
find … -prune
예를 들어, 지금까지 지정한 기준을 충족하는 항목을 찾으면 아니요해당 디렉터리로 재귀하지만 해당 수준의 다음 개체로 계속 진행합니다. 그래서,find . -type d -mtime -151 –prune
위에 보여드린 예제 디렉토리 구조와 관련하여 보고해야 합니다.
./dir1 ./dir2/dir21 ./dir2/dir23 ./dir2/dir25 ./dir2/dir27
./dir1/dir12
,./dir1/dir14
, 는 검색되지 않고 , 150일이 지나지 않았기 때문에./dir1/dir16
나열되지 않습니다 ../dir1
- 이름에 공백 문자(공백, 탭 및 줄 바꿈)가 포함될 수 있는 디렉터리 이름을 처리하려면
-print0
및 를 사용하세요 .xargs -0
- 그런 다음 지정된 디렉터리를 재귀적으로 검색하도록 하는 옵션을 사용하여
zip
호출합니다 .-r
참고: 다음과 같은 경우많은디렉토리, 즉 디렉토리 이름 목록은 수십만 문자 길이이므로 여러 번
xargs
실행해야 할 수도 있습니다 .zip
이것은 문제가 되지 않습니다. 왜냐면zip myarc file1 file2 zip myarc file3 file4
일반적 으로 , , 및
myarc.zip
가 포함 되어야 합니다 .file1
file2
file3
file4
zip
다음에 추가기존 아카이브를 파괴하고 덮어쓰는 대신 기존 아카이브를 삭제합니다. 그러나 동일한 주장을 통해tnsd3801_Postfeb16_7106.zip
기존 콘텐츠에 추가하려는 경우가 아니면 위 명령을 실행하기 전에 해당 항목이 존재하지 않는지 확인해야 합니다 .