
임시 파일에서 특정 패턴을 가진 모든 파일을 삭제하는 크론이 있습니다.
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