查找具有两个子目录的所有目录

查找具有两个子目录的所有目录

命令

find ~ -maxdepth 2 -mindepth 2

不起作用还有其他解决方案吗?

嗯,好吧,我找到了解决方案:

find ~ -maxdepth 1 -links 4 -type d

对于那些试图解决这个问题的人来说

答案1

find . -type d -exec sh -c '
    for pathname do
        set -- "$pathname"/*/
        [ "$#" -eq 2 ] && printf "%s\n" "$pathname"
    done' sh {} +

上面的命令将打印当前目录下包含两个子目录的所有目录的路径名。

内联脚本批量sh -c获取找到的目录的路径名find,并将迭代每个批次,一次一个目录。

对于每个目录$pathname,shell glob"$pathname"/*/都会展开。此模式将扩展到直接位于其下的所有子目录的所有路径名$pathname(或者如果没有子目录,则将保持未扩展状态)。该参数$#将包含模式扩展到的项目数,如果是两个,则打印目录的路径。

以上不会计算隐藏目录。为此,请bash在激活其dotglobshell 选项的情况下使用:

find . -type d -exec bash -O dotglob -c '
    for pathname do
        set -- "$pathname"/*/
        [ "$#" -eq 2 ] && printf "%s\n" "$pathname"
    done' bash {} +

有关的:

答案2

stat可用的?利用硬链接数量为 2(父目录链接加..链接)加上子目录计数,尝试

stat -c"%n %F %h" * | sed -n '/directory 4/ s///p;'

相关内容