12

Как рекурсивно удалить файлы размером менее 1 МБ из каталога?

5 ответов5

20

Это можно сделать с помощью find:

find . -type f -size -1M -exec rm {} +

Обратите внимание, что это рекурсивно сойдет в подкаталоги и безоговорочно удалит все файлы размером менее 1 мегабайта. Быть осторожен.

10

Это должно сделать работу:

$ find <directory> -type f -size -1M -delete
2

Просто для разнообразия и возможного (возможно, предельного) прироста производительности:

find <directory> -type f -size -1M -print0  | xargs -0 rm
1

Пытаться

находить . -размер -1M -exec rm {} \;

-1

Вы можете проверить эту ссылку 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, чтобы найти размер файла, как в приведенном выше примере.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .