특정 크기보다 작은 파일을 모두 삭제하는 스크립트(크론 작업)

특정 크기보다 작은 파일을 모두 삭제하는 스크립트(크론 작업)

/media/motion에서 13MB보다 작은 모든 파일과 동일한 파일 이름에 추가 확장자가 추가된 모든 파일(모두 13MB보다 훨씬 작음)을 삭제해야 하므로 검색 결과에 "*"를 추가합니다.

파일은 다음과 같습니다.

file1.mp4
file1.mp4.thumb
file2.mp4
file2.mp4.thumb

13MB보다 작은 모든 .mp4 파일과 해당 .mp4.thumb 파일을 삭제하고 싶습니다(둘 다 매우 작음).

저는 두 가지 방법을 시도해봤습니다. 명령을 에코하고 실행하면 작동하지만 스크립트를 실행하면 작동하지 않습니다.

/usr/bin/find /media/motion -name \"*.mp4\" -size -13M -exec rm -f {}\\* \\\;  

찾았습니다: "exec"에 대한 매개변수가 누락되었습니다.

나는 또한 다음을 시도했습니다.

/usr/bin/find /media/motion -name "*.mp4" -size -13M -print | xargs printf -- '%s \* \n' | xargs -0 rm -f

이로 인해 출력이 발생하지 않습니다.

답변1

기본 crontab PATH( /usr/bin:/bin)를 변경하지 않은 경우 셸과 crontab에서 작동합니다.

find /media/motion -type f -name '*.mp4' -size -13M -exec sh -c 'for f; do rm "$f"*; done' sh {} +

이는 쉘 스크립트를 사용하여 파일을 반복하고 *예상 파일로 확장합니다.

필요한 경우 추가할 수 있습니다 -f.rm

관련 정보