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

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

  • Значение @ 0 в сценарии оболочки
  • «Где» и «найти» во FreeBSD
  • Распечатайте файлы, которые
  • find -exec не работает в рыбе
  • найти использование с -L
  • Поиск файлов, имеющих подтвержденный дубликат в том же каталоге, рекурсивно
  • Имея некоторые проблемы с использованием «find -exec {} +"
  • Поиск файлов по их владельцам и разрешениям на файлы
  • 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 ... 
    Interesting Posts

    sed разделить верилогическую шину на отдельный порт

    Как скопировать каталоги через ssh

    Предварительный автолог через 2 jumphost / passphrase

    «Ls $ PWD» и «ls.» Получают разные файлы, возможно, странное кэширование?

    Как установить вкладки по умолчанию только для cat?

    Преобразование даты в эпоху из результата команды в человекообразное

    Просмотр файлов mm

    Контрольный список для безболезненной перенастройки для рабочей станции: что я должен помнить?

    Если я SSH на удаленную машину, и мое соединение будет отключено, то есть шанс, что запуск, который я сделал, продолжится?

    если существует переменная env, выйдите из сценария

    Необходимо открыть порт 1111 на сервере unix

    Как выбрать адекватный дистрибутив Linux для данного оборудования?

    Как я могу читать и извлекать информацию из ленты DDS-1 сегодня?

    Одновременные точки доступа wlan0 и wlan1 (через hostapd)

    Как вернуть апплет объема GNOME?

    Linux и Unix - лучшая ОС в мире.