답변:
이 작업은 find다음 과 같이 수행 할 수 있습니다 .
find . -type f -size -1M -exec rm {} +
이는 하위 디렉토리로 재귀 적으로 내려 가며 1MB보다 작은 모든 파일을 무조건 삭제합니다. 조심해.
find입니다. :)
find달리 시스템의 한계에 맞도록 호출 된 프로세스로 인수 수를 제한합니다 rm *. 필요한 경우 find여러 인스턴스를 호출 rm합니다. 그리고 줄 바꿈 문자를 포함하여 특수 문자가 올바르게 취급된다고 확신합니다. 내가 선호하지 -exec rm를 통해 -delete유연성을 이유로 - 예를 들어, 후자의 제공 방법 삭제 쓰기 보호 된 파일에.
-1M원하는대로 1MB 미만을 의미합니다. 귀하의 버전은 정확히 1 메가 바이트 크기의 모든 파일을 삭제하는데, 이는 다소 의미없는 작업으로 보입니다.
find . -type f -size +1M -exec rm {} +. -1M 대신 + 1M을 참고하십시오.
이것은 일을해야합니다 :
$ find <directory> -type f -size -1M -delete
-부호가 "1M 미만"을 의미하는 빼기 부호 라고 믿는다 . 실행 find <directory> -type f -size +1M -delete하면 1M 보다 큰 모든 파일이 삭제됩니다 .
다양성과 가능한 (아마도 한계가있는) 성능 향상을 위해 :
find <directory> -type f -size -1M -print0 | xargs -0 rm
xargs프로세스를 시작합니다 .
이 링크 http://ayaz.wordpress.com/2008/02/05/bash-quickly-deleting-empty-files-in-a-directory/ 를 확인하십시오. 원하는 링크 가 정확히 있습니다.
for file in *;
do
file_size=$(du $file | awk '{print $1}');
if [ $file_size == 0 ]; then
echo "Deleting empty file $file with file size $file_size!";
echo "rm -f $file";
fi;
done
for 루프를 사용하여 모든 파일을 반복 한 다음 du와 awk를 사용하여 위 예제와 같이 파일 크기를 찾을 수 있습니다.
1M.