如何在unix中查找空目录

如何在unix中查找空目录

我想使用shell脚本显示我的主目录下的所有空目录,你能帮我找到代码吗? (不使用find's -empty

答案1

使用 GNU find

find ~ -type d -empty

(这将从您的主目录开始查找空目录)。

答案2

如果您的发现没有-empty标志(例如来自busbox或任何其他符合 POSIX 标准find),你必须这样做(受到@的启发约旦回答), 使用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 shell
    • shopt -s nullglob; shopt -s dotglob在这种bash情况下,nullglob可以防止 bash 在不匹配任何内容时返回模式。dotglob包括以点 ( .) 开头的文件和目录。
    • a=("$1"/*)$a使用处理目录中的所有项目填充数组
    • [[ ${a[@]} ]]检查是否$a包含项目。如果不...
    • printf "%s\n" "$1"打印目录名称

如果您想进一步处理该列表,请确保用空字节分隔项目:

find . -type d -exec bash -c 'shopt -s nullglob; shopt -s dotglob; 
      a=("$1"/*); [[ ${a[@]} ]] || printf "%s\0" "$1"' sh {} \; | xargs -0 ...

答案3

如果你想找到空目录你的主目录,除了主树下的所有空目录之外,你可以使用 GNU find

find ~ -maxdepth 1 -type d -empty

相关内容