Нахождение всех каталогов с гигабайтами занимаемого пространства. Извлечение имени каталога из xargs и затем снова xargs для их удаления.
du -d2 -h ~/Downloads/ | grep -E '[0-9]G' | xargs -I{} sh -c "echo {} | cut -d' ' -f2" | xargs rm -ri
Я хотел бы интерактивно удалить каталог, но у меня нет возможности в bash ввести опцию.
Вы не можете интерактивно отвечать на вопросы rm -ri
с помощью последней команды xargs
: объяснение здесь.
Вместо этого вы можете указать список больших каталогов в качестве аргументов для rm -ri
:
rm -ri $(du -d2 -h ~/Downloads/* | grep -E '[0-9]G' | xargs -I{} sh -c "echo {} | cut -d' ' -f2")
Обратите внимание, что вы можете заменить xargs cut
на awk
. ] как таковой:
rm -ri $(du -d2 -h ~/Downloads/* | grep -E '[0-9]G' | awk '{print $2}')
Или даже короче:
rm -ri $(du -d2 -h ~/Downloads/* | awk '$1 ~ /G$/ {print $2}')
Также обратите внимание, что приведенные выше команды не будут работать, если в именах файлов есть пробелы.
Похоже, что существует метод интерактивного удаления каталогов с помощью xargs. Прочитав справочные страницы, я сам нашел решение.
Параметр -p вместе с параметром -n 1 решает проблему.
du -d2 -h ~/Downloads/* | grep -E '[0-9]G' | xargs -I{} sh -c "echo {} | cut -d' ' -f2" | xargs -p -n1 rm -r