Какую команду можно выполнить, чтобы проверить каталоги внутри папки и, если общий размер каталога меньше 30 МБ, удалить его? Я играл с командой find
, пытаясь переместить файлы в зависимости от размера, но это не сработало должным образом.
Я использовал (для 1 МБ):
find . -size +102400k -exec mv DIRECTORY
find . -size -102400k -exec mv DIRECTORY
Если мы говорим о размере каталога, я не уверен 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
) вместо прямого удаления их.
Find не знает общий размер каталогов. Так что такой подход не сработает.
Вы можете найти все каталоги и выполнить скрипт, который использует du, чтобы увидеть, если они меньше 1 МБ.