zip -mtime -150 디렉토리를 만드는 방법

zip -mtime -150 디렉토리를 만드는 방법

오늘부터 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일 동안 수정된 디렉터리 안팎의 모든 내용을 원하기 때문입니다.)dir11dir12dir13dir14dir15dir16dir17dir21dir23dir25dir27dir2

당신은 이것을 할 수 있습니다

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가 포함 되어야 합니다 .file1file2file3file4zip다음에 추가기존 아카이브를 파괴하고 덮어쓰는 대신 기존 아카이브를 삭제합니다. 그러나 동일한 주장을 통해 tnsd3801_Postfeb16_7106.zip기존 콘텐츠에 추가하려는 경우가 아니면 위 명령을 실행하기 전에 해당 항목이 존재하지 않는지 확인해야 합니다 .

관련 정보