我正在尝试编写一个shell脚本,它检查给定目录是否包含特别命名的子目录。我将父目录作为第一个参数传递,并且只传递子目录的名称。我希望脚本遍历Parent的内容,看看它是否包含一个类型为directory的文件,该文件以我为Child传递的名称命名。
这是我的代码。在其中我试图将父ls
的输出传递给egrep
命令。我正在尝试编写一个正则表达式,检查ls
的输出是否具有与我的子名称相匹配的名称(不同于其名称中的某个位置)。
PARENT=$1
CHILD=$2
DIRNUM=$(ls -l $PARENT | egrep -c '< $CHILD >')
echo $DIRNUM
答案 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的所有子目录