특정 기간의 폴더를 찾은 다음 특정 크기로 필터링하고 일치하는 폴더를 삭제하시겠습니까?

특정 기간의 폴더를 찾은 다음 특정 크기로 필터링하고 일치하는 폴더를 삭제하시겠습니까?

나는 한동안이 문제를 겪고 있습니다. 이것이 나의 매우 제한된 배관 능력에도 불구하고 효과가 있는 것처럼 보이는 내가 마침내 생각해낸 것입니다.

내 목표를 달성하기에는 이것이 나쁜 방법인 것 같습니다. 이 작업을 보다 효율적으로 수행할 수 있는 더 쉬운 방법이 있습니까?

$ find /home/data/cam*/* -maxdepth 0 -type d -mtime +30 \
    -exec du -sm {} \;| awk '{if ( $1 > 3000 ) print $2}' | xargs rm -rf

답변1

실제로 나쁘지 않습니다. 그 /home/data/cam*/* -maxdepth 0부분이 괜찮고 디렉터리 이름에 개행 문자가 포함되어 있지 않다고 가정하면 다음과 같이 할 것입니다.

find /home/data/cam*/* -maxdepth 0 -type d -mtime +30 -exec du -sm {} + | \
    awk '$1 > 3000' | cut -f 2- | xargs rm -rf

-exec du -sm {} +최적화이므로 du모든 디렉터리에 대해 실행되지는 않습니다. 그리고 awk '$1 > 3000' | cut -f 2-디렉터리 이름에 공백이 포함된 경우에도 이것이 작동하는지 확인하세요.

관련 정보