Bash:列出所有只包含两个子文件夹的目录:folder1和folder2?

Bash:列出所有只包含两个子文件夹的目录:folder1和folder2?,bash,Bash,正如在标题中一样,有人可以只使用Bash来帮助回答这个问题吗 我花了一些时间弄不明白。谢谢。下面应该列出只包含两个文件夹的目录folder1和folder2 for i in $(find . -type d); do count=$(find $i -mindepth 1 -maxdepth 1 -type d | wc -l); [ $count -eq 2 ] && [ -d $i/folder1 ] && [ -d $i/folder2 ] &&a

正如在标题中一样,有人可以只使用Bash来帮助回答这个问题吗


我花了一些时间弄不明白。谢谢。

下面应该列出只包含两个文件夹的目录
folder1
folder2

for i in $(find . -type d); do count=$(find $i -mindepth 1 -maxdepth 1 -type d | wc -l); [ $count -eq 2 ] && [ -d $i/folder1 ] && [ -d $i/folder2 ] && echo $i ; done
如果文件夹中有其他文件,上面的内容就不重要了。如果您只想确保目录
folder1
folder2
,请说:

for i in $(find . -type d); do count=$(find $i -mindepth 1 -maxdepth 1 | wc -l); [ $count -eq 2 ] && [ -d $i/folder1 ] && [ -d $i/folder2 ] && echo $i ; done

[请注意,上述内容可能不适用于目录名中的空格。]

以下应列出仅包含两个文件夹的目录
folder1
folder2

for i in $(find . -type d); do count=$(find $i -mindepth 1 -maxdepth 1 -type d | wc -l); [ $count -eq 2 ] && [ -d $i/folder1 ] && [ -d $i/folder2 ] && echo $i ; done
如果文件夹中有其他文件,上面的内容就不重要了。如果您只想确保目录
folder1
folder2
,请说:

for i in $(find . -type d); do count=$(find $i -mindepth 1 -maxdepth 1 | wc -l); [ $count -eq 2 ] && [ -d $i/folder1 ] && [ -d $i/folder2 ] && echo $i ; done

[请注意,上述内容可能不适用于目录名中的空格。]

这将列出这些目录,而不会在搜索中出现冗余

#!/bin/bash

function check {
    local DIR SUBFOLDERS=()
    for DIR; do
        readarray -t SUBFOLDERS < <(find "$DIR" -maxdepth 1 -mindepth 1 -type d)
        if [[ ${#SUBFOLDERS[@]} -gt 0 ]]; then
            [[ ${#SUBFOLDERS[@]} -eq 2 ]] && echo "$DIR"
            check "${SUBFOLDERS[@]}"
        fi
    done
}

check "$@"
示例:

bash script.sh .
bash script.sh "$HOME"
bash script.sh /var /usr

这将列出这些目录,而不会在搜索中出现冗余

#!/bin/bash

function check {
    local DIR SUBFOLDERS=()
    for DIR; do
        readarray -t SUBFOLDERS < <(find "$DIR" -maxdepth 1 -mindepth 1 -type d)
        if [[ ${#SUBFOLDERS[@]} -gt 0 ]]; then
            [[ ${#SUBFOLDERS[@]} -eq 2 ]] && echo "$DIR"
            check "${SUBFOLDERS[@]}"
        fi
    done
}

check "$@"
示例:

bash script.sh .
bash script.sh "$HOME"
bash script.sh /var /usr

问题不清楚;你能换一种说法吗?子文件夹的名称是否正是这样,或者你正在寻找正好包含两个子文件夹的目录?目录中是否允许任何文件?是否允许使用诸如grep、sed、awk、python之类的工具,这些工具通常与bash脚本一起使用。这是家庭作业吗?抱歉搞混了。是,列出仅包含两个文件夹的文件夹,它们是folder1和folder2。感谢的问题还不清楚;你能换一种说法吗?子文件夹的名称是否正是这样,或者你正在寻找正好包含两个子文件夹的目录?目录中是否允许任何文件?是否允许使用诸如grep、sed、awk、python之类的工具,这些工具通常与bash脚本一起使用。这是家庭作业吗?抱歉搞混了。是,列出仅包含两个文件夹的文件夹,它们是folder1和folder2。谢谢