检查目录是否包含特定的子目录

时间:2015-02-05 02:35:07

标签: bash shell unix

我正在尝试编写一个shell脚本,它检查给定目录是否包含特别命名的子目录。我将父目录作为第一个参数传递,并且只传递子目录的名称。我希望脚本遍历Parent的内容,看看它是否包含一个类型为directory的文件,该文件以我为Child传递的名称命名。

这是我的代码。在其中我试图将父ls的输出传递给egrep命令。我正在尝试编写一个正则表达式,检查ls的输出是否具有与我的子名称相匹配的名称(不同于其名称中的某个位置)。

PARENT=$1
CHILD=$2

DIRNUM=$(ls -l $PARENT | egrep -c '< $CHILD >')
echo $DIRNUM

2 个答案:

答案 0 :(得分:3)

不要这样做。 Don't parse ls

直接使用[/test内置/命令检查文件/目录。

path=$parent/$child
if [ -d "$path" ]; then
    echo "$path exists."
else
    echo "$path does not exist."
fi

您注意到我在变量名称上切换了大小写。 ALL_UPPER变量是&#34;保留&#34;对于shell的使用,你不应该使用任何。

答案 1 :(得分:2)

使用find命令,如下所示:

# find $parent -name \*${child}\* -and -type d

type选项用于确保找到的名称是目录。

此命令将查找位于$ parent内且名称中包含$ child的所有子目录