То, что вы просите, это ужасная идея. Это происходит главным образом из-за того, как работает то, что вы просили: если папка foo
содержит более 1 ГБ, каждая родительская папка foo
также содержит больше этого (потому что она содержит папку foo
).
Таким образом, если вы сканируете /home/myuser/myfolder/
для вещей большего размера и /home/myuser/myfolder/bar/quz/baz/foo
is, /home/myuser/myfolder/bar/quz/baz
, /home/myuser/myfolder/bar/quz/
/home/myuser/myfolder/bar/
и /home/myuser/myfolder/
будут помечены для удаления.
Вы можете обойти это с опцией -S для du.
Это дает результат (ТО, ЧТО Я НЕ РЕКОМЕНДУЮ РАБОТАТЬ)
du -Sb $DIR | grep '^[0-9]\{10\}' | cut -f 2- | xargs -d "\n" rm -rf
Это не удастся для каталогов, имена которых содержат символы новой строки. Устранение этого недостатка оставлено читателю в качестве упражнения.
Если вы хотите, чтобы другой размер составлял регулярное выражение, соответствующее ему. du -b
возвращает размеры в байтах, поэтому работайте оттуда. ПОДСКАЗКА: 365 МБ или больше будет '^\([0-9]\{10\}\|[4-9][0-9]\{8\}\|3[7-9][0-9]\{7\}\|36[6-9][0-9]\{6\}\)'
.