Как найти пустые каталоги в unix

Я хочу показать все пустые каталоги под моим домашним каталогом, используя сценарий оболочки, можете ли вы помочь мне найти код? (без использования find-empty )

3 Solutions collect form web for “Как найти пустые каталоги в unix”

Использование GNU find :

 find ~ -type d -empty 

(это ищет пустые каталоги, начиная с вашего домашнего каталога).

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

find ~ -maxdepth 1 -type d -empty

Если ваша находка не имеет никакого флагов (например, для exmaple один из busbox или любой другой POSIX-совместимой find ), вы должны сделать это таким образом (на основе ответа @ jordanm ), используя bash :

 find . -type d -exec bash -c 'shopt -s nullglob; shopt -s dotglob; a=("$1"/*); [[ ${a[@]} ]] || printf "%s\n" "$1"' sh {} \; 
  • -type d найти только каталоги
  • -exec bash -c '...' sh {} \; вызывает оболочку bash для каждого найденного каталога
    • shopt -s nullglob; shopt -s dotglob shopt -s nullglob; shopt -s dotglob в этом экземпляре bash , nullglob запрещает bash возвращать шаблон при совпадении ничего. dotglob включает файлы и каталоги, начинающиеся с точки ( . ).
    • a=("$1"/*) заполняет массив $a всеми элементами в каталоге обработки
    • [[ ${a[@]} ]] проверить, содержит ли $a элементы. Если не…
    • printf "%s\n" "$1" печатает имя каталога

Если вы хотите обработать этот список дальше, обязательно разделите элементы на null:

 find . -type d -exec bash -c 'shopt -s nullglob; shopt -s dotglob; a=("$1"/*); [[ ${a[@]} ]] || printf "%s\0" "$1"' sh {} \; | xargs -0 ... 
  • Поиск файлов в нескольких каталогах, взятых из списка в файле?
  • Почему find -exec du суммируется по-разному?
  • Как найти список файлов и закрепить их в одном ZIP-файле?
  • Найти только в каталогах n уровней
  • вырваться из поиска, если сбой -exec
  • Есть ли такое понятие, как расширение, где искать поиски?
  • Эквивалент Solaris для глубины / обрезки?
  • Ошибка при поиске при использовании значений -newerct, хранящихся в переменных
  • «Где» и «найти» во FreeBSD
  • Как обновляется так много быстрее, чем найти?
  • Рекурсивно найти файлы по содержанию
  • Путаница в отношении параметра «-print» в команде «find»
  • Linux и Unix - лучшая ОС в мире.