Поиск каталогов внутри папки и удаление, если они меньше определенного размера?

Какую команду можно выполнить, чтобы проверить каталоги внутри папки и, если общий размер каталога меньше 30 МБ, удалить его? Я играл с командой find, пытаясь переместить файлы в зависимости от размера, но это не сработало должным образом.

Я использовал (для 1 МБ):

find . -size +102400k -exec mv DIRECTORY
find . -size -102400k -exec mv DIRECTORY
1
задан 28 March 2012 в 19:52

2 ответа

Если мы говорим о размере каталога, я не уверен find движение должно помочь. du оказывается перед необходимостью быть включенным в какой-то момент.

Вот что-то, что я записал для нахождения близких каталогов под 30M:

du --max-depth 1 | awk -v q='"' '$1 < 30000000 && $2 != "." {sub(/^[0-9\t ]+/, "", $0); print q $0 q}'

Можно затем объединить это в цепочку в xargs rm -rf но я протестировал бы его очень серьезно прежде, чем сделать это. Вы могли бы хотеть переместить каталоги (с mv) вместо прямого удаления их.

1
ответ дан 28 March 2012 в 19:52

Find не знает общий размер каталогов. Так что такой подход не сработает.

Вы можете найти все каталоги и выполнить скрипт, который использует du, чтобы увидеть, если они меньше 1 МБ.

0
ответ дан 28 March 2012 в 19:52

Другие вопросы по тегам:

Похожие вопросы: