我想使用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 shellshopt -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