find 명령으로 인해 일치하지 않는 파일이 압축되는 경우가 있습니다.

find 명령으로 인해 일치하지 않는 파일이 압축되는 경우가 있습니다.

지난 x분 동안 수정된 특정 디렉토리의 모든 파일을 포함하는 zip 파일을 만들려고 합니다.

이것은 내 명령입니다:

find "/path/to/dir" -mmin -30 -not -name ".*" -exec zip -r "testfile.zip" "{}" \+

수정 시간을 충분히 작게 설정하면 최근에 변경한 파일 하나를 올바르게 식별합니다.

문제는... 최소 수정 시간을 50(계속 변경됨)으로 늘리면 zip 파일이 추가된다는 것입니다.모두/path/to/dir에 있는 파일 수입니다. 모든 파일이 삭제되었더라도정말변경 없음.

따라서 전체 find 명령이 충돌하게 만드는 특정 파일이 하나 있습니다. 공백이나 기타 내용이 포함된 파일을 찾기 위해 최근에 수정된 파일(마지막 하루 이내)을 모두 살펴봤지만 아무것도 찾지 못했습니다. 중괄호를 인용했으므로 이는 중요하지 않습니다. 그렇죠?

이 이상한 동작을 일으키는 또 다른 원인은 무엇입니까?

답변1

기본적으로 find디렉터리, 파일, 심볼릭 링크 등 모든 것이 검색에 포함됩니다.

find "/path/to/dir" -mmin -30 -not -name ".*" -exec zip -r "testfile.zip" "{}" \+

/path/to/dir지난 30분 이내에 수정된 경우 모든 테스트를 통과하고 zip옵션이 제공되었으므로 -r디렉터리와 그 아래의 모든 항목이 아카이브에 추가됩니다.

다음 중 하나(또는 둘 다)를 사용하여 다양한 방법으로 이 문제를 해결할 수 있습니다.

  • zip옵션을 제공하지 마십시오 -r. 가장 최근에 수정된 디렉터리의 모든 파일이 아니라 가장 최근에 수정된 파일에만 관심이 있습니다.
  • 디렉터리와 일치하지 않도록 -not -type d표현식에 테스트를 추가합니다 .find
find "/path/to/dir" -not -type d -mmin -30 -not -name ".*" -exec zip "testfile.zip" "{}" \+

관련 정보