尝试find:
find /opt/BMC/patrol -type d -iname 'patrol*'
-type d比赛目录,-iname是不区分大小写的匹配。 'patrol*'必须引用'',否则在find有机会之前,shell将扩展*。
find默认情况下会递归搜索(请参阅下面的编辑2)。
编辑ls未针对此用例进行优化。 ls -d可以防止进入目录,这就是为什么你没有得到任何匹配。据grep去,^匹配在行的开始,而不是在目录的名称前的前导/匹配。因此,grep -i '\/patrol'将是一种查找以Patrol或patrol开头的名称的方法,但您仍然必须过滤到目录。 find旨在处理所有这些事情。
编辑2对于非递归,使用-maxdepth:
find /opt/BMC/patrol -maxdepth 1 -type d -iname 'patrol*'
我做了一个测试目录包含以下内容的基础上,你的问题:
opt/BMC/patrol/
opt/BMC/patrol/BMCINSTALL/
opt/BMC/patrol/bmc_products/
opt/BMC/patrol/cert_gg/
opt/BMC/patrol/common/
opt/BMC/patrol/common/patrol.d/
opt/BMC/patrol/Install/
opt/BMC/patrol/itools/
opt/BMC/patrol/Patrol3/
opt/BMC/patrol/Patrol3.16/
opt/BMC/patrol/PatrolAgent_3181.sh
opt/BMC/patrol/patrol_cfg.sh
opt/BMC/patrol/perform/
opt/BMC/patrol/rtserver/
opt/BMC/patrol/temp2/
opt/BMC/patrol/test/
opt/BMC/patrol/testftp/
opt/BMC/patrol/Uninstall/
当我跑第一我得到:
opt/BMC/patrol
opt/BMC/patrol/common/patrol.d
opt/BMC/patrol/Patrol3
opt/BMC/patrol/Patrol3.16
当运行所述第二命令(-maxdepth),我得到:
opt/BMC/patrol
opt/BMC/patrol/Patrol3
opt/BMC/patrol/Patrol3.16
和common/patrol.d中不存在的结果。