如何在Linux中显示以小或大写字母开头的目录?

问题描述:

我想要显示以Patrol*patrol*开头的目录/opt/BMC/patrol/中的所有目录名称。命令如何在Linux中显示以小或大写字母开头的目录?

ls /opt/BMC/patrol/ | grep -i '^Patrol*' 

产生

Patrol3 
Patrol3.16 
PatrolAgent_3181.sh 
patrol_cfg.sh 

这是正确的,但也有目录和文件,而不仅仅是目录。

命令ls -d /opt/BMC/patrol/*/ | grep -i '^Patrol*'产生什么...

命令产生

/opt/BMC/patrol/BMCINSTALL/ 
/opt/BMC/patrol/bmc_products/ 
/opt/BMC/patrol/cert_gg/ 
/opt/BMC/patrol/common/ 
/opt/BMC/patrol/Install/ 
/opt/BMC/patrol/itools/ 
/opt/BMC/patrol/Patrol3/ 
/opt/BMC/patrol/Patrol3.16/ 
/opt/BMC/patrol/perform/ 
/opt/BMC/patrol/rtserver/ 
/opt/BMC/patrol/temp2/ 
/opt/BMC/patrol/test/ 
/opt/BMC/patrol/testftp/ 
/opt/BMC/patrol/Uninstall/ 

是否递归搜索?什么是仅查找以大写或小写字母开头的目录名称的命令?

+0

顺便说一句,迟到的欢迎来到该网站!查看[tour](https://stackoverflow.com/tour)和[how-to-ask page](https://stackoverflow.com/help/how-to-ask)了解更多关于网站的信息运行。 – cxw

尝试find

find /opt/BMC/patrol -type d -iname 'patrol*' 

-type d比赛目录,-iname是不区分大小写的匹配。 'patrol*'必须引用'',否则在find有机会之前,shell将扩展*

find默认情况下会递归搜索(请参阅下面的编辑2)。

编辑ls未针对此用例进行优化。 ls -d可以防止进入目录,这就是为什么你没有得到任何匹配。据grep去,^匹配在行的开始,而不是在目录的名称前的前导/匹配。因此,grep -i '\/patrol'将是一种查找以Patrolpatrol开头的名称的方法,但您仍然必须过滤到目录。 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中不存在的结果。

+0

它的工作原理,但怎么一回事,因为我得到 '/选择/ BMC /巡逻/ 的/ opt/BMC /巡逻/ Patrol3 /opt/BMC/patrol/common/patrol.d 它再次递归,也搜索子目录/ opt/BMC/patrol/Patrol3.16' –

+0

@ ag.lis你想要非递归吗?如果是这样,请[编辑您的问题](https://stackoverflow.com/posts/46790208/edit)澄清。谢谢! – cxw