Подтвердить что ты не робот

Как получить все файлы, превышающие определенный размер, и удалить их

  • Я ищу команду linux для получить все файлы, превышающие определенный размер от текущего каталог и его подкаталоги.

  • Самый простой способ удалить все эти файлы?

4b9b3361

Ответ 1

Подобно запросу exec rm, но не нужен процесс для каждого найденного файла:

find . -size +100k -delete

Ответ 2

Однострочник:

find . -size +100k -exec rm {} \;

Первая часть (find . -size +100k) ищет все файлы, начиная с текущего каталога (.), превышающего (+) 100 кбайт (100k).

Вторая часть (-exec rm {} \;) вызывается данной командой для каждого найденного файла. {} является заполнителем для текущего имени файла, включая путь. \; просто отмечает конец команды.

Не забудьте всегда проверять правильность критериев фильтрации, запустив raw find:

find . -size +100k

Или вы можете сделать резервную копию перед удалением:

find . -size +100k -exec cp --parents {} ~/backup \;

Ответ 3

В zsh:

ls -l *(Lk+100)   # list file size greater than 100kb

так:

rm *(Lk+100)

Подробнее zsh goodness здесь.

Ответ 4

python установлен на всех ОС на основе UNIX, поэтому почему бы не использовать его вместо bash?

Я всегда нахожу python более читаемым, чем awk и sed magic.

Это код питона, который я бы написал:

import os
Kb = 1024 # Kilo byte is 1024 bytes
Mb = kb*kb
Gb = kb*kb*kb
for f in os.listdir("."):
    if os.stat(f).st_size>100*Kb:
        os.remove(f)

И это однострочный вариант с python -c

python -c "import os; [os.remove(f) for f  in os.listdir('.') if os.stat(f).st_size>100*1024]"

И если вы хотите применить поиск рекурсивно, см. this