2017-10-17 101 views
1

我想要顯示以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

回答

2

嘗試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

相關問題