검색에서 찾은 모든 파일에 대한 통계를 어떻게 저장할 수 있나요?

검색에서 찾은 모든 파일에 대한 통계를 어떻게 저장할 수 있나요?

임시 파일에서 특정 패턴을 가진 모든 파일을 삭제하는 크론이 있습니다.

find /tmp/* -type f -iname magick-* -exec rm {} \;

이제 파일을 삭제하기 전에 향후 분석을 위해 모든 파일의 통계를 기록하고 싶습니다.

다음 작업을 시도했지만 검색 결과가 둘 이상 출력되면 작동하지 않습니다.

find /tmp/* -type f -iname magick-* -exec stat {} \;

여러 결과에 대해 작동하게 하려면 어떻게 해야 하며, 파일에 기록하려면 어떻게 해야 합니까?

답변1

넌 아무것도 보여주지 않아하다시도할 때 발생합니다. 단지 "작동하지 않는다"라고 말하는 것은 결코 옳지 않습니다.

귀하의 문제는 다음 중 하나 이상과 관련이 있을 수 있습니다.

  • 패턴을 인용하거나 이스케이프하십시오 *. 이를 수행하지 않고 현재 디렉토리에 패턴과 일치하는 파일이 하나 이상 있으면 패턴이 일치하는 파일 목록으로 확장되어 명령으로 대체됩니다.아니요당신은 무엇을 원합니까?
  • find 와 함께 사용하지 말고 /tmp/*그냥 사용하십시오. 지정된 디렉토리 자체로 완벽하게 재귀할 수 /tmp있으며 find이름이 점으로 시작하는 모든 파일도 찾습니다.

그 외에도 rm작동 한다면 stat작동해야 합니다.

또한 다음 두 가지를 결합할 수도 있습니다.

find /tmp -type f -iname 'magick-*' -exec stat {} \; -exec rm {} \;

먼저 stat실행한 후, stat실패가 없으면 rm실행됩니다.

find원하는 파일로 간단히 리디렉션하여 출력을 저장할 수 있습니다.

답변2

한 번에 모든 것을 사용할 수 있습니다. 전체 작업을 한 번에 수행하므로 더 빠른 +반대 접근 방식을 사용할 수도 있습니다 .

find /tmp -type f -iname 'magick-*'-exec stat {} + -exec sh -c 'rm -rf  $@' _ {} + | tee -a log_to_file

관련 정보