Скажем, у меня есть каталог с именем foo/
. Эта папка содержит подкаталоги. Как я могу удалить все пустые каталоги в одной команде?
command-line
delete
directory
justingrif
источник
источник
rm -rf <directory-name>
. Это удалит каталог вместе со всем его содержимым, включая файлы и подкаталоги. В-r
означает опция удаления рекурсивно, в то время как-f
средства команда не подскажите перед удалением. Однако если вы хотите получить запрос перед удалением каталога / файла, замените-f
параметр на-i
параметр.stdout
одной команды (напримерfind
) вstdin
другую (напримерrm
), но будьте очень осторожны, так как это может уничтожить или удалить файлы / каталоги, которые вы не хотите удалять! Для получения дополнительной информации о том, как это сделать, см.man
Страницы для каждой из этих команд. Чтобы быть в безопасности, всегда проверяйте такие вещи во временном каталоге, прежде чем испытывать их на реальных вещах.Вы можете воспользоваться
rmdir
отказом команды удалить непустые каталоги иfind -depth
опцией обхода дерева каталогов снизу вверх:(и игнорировать ошибки), или добавить,
2>/dev/null
чтобы действительно игнорировать их.-depth
Возможностьfind
начала находить в нижней части дерева каталогов.rm -rf
удалит все файлы в каталоге (и его подкаталогах, и ....) и все каталоги и все.источник
Удалит все пустые каталоги. Он выдаст ошибку для каждого непустого каталога и файла, чтобы эти ошибки не загромождали ваш терминал, используйте
источник
rmdir * 2>/dev/null || true
. (Способ find (1) лучше подходит для сценариев, но по другой причине: потому что он лучше выражает то, что вы хотите сделать.)$HOME
. Со злой усмешкойЕсли вы хотите удалить только прямые подкаталоги
foo/
.источник
Подход Python
Это работает так:
os.walk()
функцию для рекурсивного обхода дерева каталогов. На каждой итерацииr
устанавливается текущая папка, к которой мы обращаемся,s
содержит список каталогов внутриr
иf
будет содержать список файлов в этой папке. Конечно, еслиf
иs
пусто, мы знаем, чтоr
пусто.empty
список всех пустых каталогов на основе оценки, указанной выше.map()
используется для выполненияos.rmdir()
каждого элемента вempty
списке. Понимание списка может быть использовано как альтернатива.Как сценарий это будет так:
источник
/bin/sh
only, а Python на самом деле более элегантный язык, чем эти два