我想在目录树中找到一些名称,当我找到特定目录时,我想检查它是否有一些默认子目录。问题是,我不知道如何做到这一点。我尝试使用这个命令:
find -iname $i -exec if [ -d $1/subdir ] then echo $1 fi
然后我得到这样的报告:
find:缺少`-exec'
的参数
那么,什么是正确的解决方案?
答案 0 :(得分:2)
exec
需要单个可执行文件,而不是任意shell命令。显式运行新的shell实例,并将shell命令作为参数传递给-c
选项。使用{}
作为sh
的单个位置参数,以便找到找到的目录的名称
正确传递给shell命令。
find -iname "$i" -exec sh -c 'if [ -d "$1"/subdir ]; then echo "$1"; fi' '{}' \;
如果可能的话,重组逻辑可能会更简单一些:
find -wholename "$i/subdir" -type d -exec dirname '{}' \;
这find
查找实际的subdir
目录而不是其父目录,然后输出包含 subdir
的目录名。