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

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

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

решение1

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

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

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

решение2

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

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

решение3

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

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

решение4

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

Связанный контент