2017-10-17 5 views
1

ディレクトリ/opt/BMC/patrol/に、すべてPatrol*または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/ 

を生成

コマンドを生成していませんか?大文字または小文字で始まるディレクトリ名だけを検索するコマンドとは何ですか?

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

-type d一致ディレクトリ、および-inameは大文字と小文字を区別しないマッチです:

+0

ところで、遅れてサイトにようこそ!サイトの仕組みの詳細については、[ツアー](https://stackoverflow.com/tour)と[How-to-askページ](https://stackoverflow.com/help/how-to-ask)を参照してください。走る – cxw

答えて

2

findを試してみてください。 'patrol*'''とする必要があります。それ以外の場合は、findがチャンスを得る前にシェルは*を展開します。

findデフォルトで再帰的に検索します(下記の編集2を参照)。

lsは、このユースケースに最適化されていません。 ls -dはディレクトリへの降下を防ぎます。そのため、マッチしないのです。 grepまでは、^が行の先頭に一致し、ディレクトリ名の前に先頭の/では一致しません。だからgrep -i '\/patrol'は、Patrolまたはpatrolで始まる名前を見つける方法ですが、依然としてディレクトリに絞り込む必要があります。 findは、これらのすべてを処理するように設計されています。

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

私は、あなたの質問に基づいて、以下の内容でテストディレクトリを作っ:

編集非再帰のために2-maxdepth使用

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/ 

私が最初に実行するときコマンド(-maxdepthなし):

opt/BMC/patrol 
opt/BMC/patrol/common/patrol.d 
opt/BMC/patrol/Patrol3 
opt/BMC/patrol/Patrol3.16 
私は( -maxdepth付き)2番目のコマンドを実行すると

、私が取得:

opt/BMC/patrol 
opt/BMC/patrol/Patrol3 
opt/BMC/patrol/Patrol3.16 

common/patrol.dは、結果には存在しません。

+0

それは動作しますが、私は 'は/ opt/BMC /パトロール/ は/ opt/BMC /パトロール/ Patrol3 /opt/BMC/patrol/common/patrol.d を得るbeacuse再びそれはサブディレクトリに再帰的にも検索します/ opt/BMC/patrol/Patrol3.16' –

+0

@ ag.lis非再帰的にしますか?その場合は、[edit your question](https://stackoverflow.com/posts/46790208/edit)を明示してください。ありがとう! – cxw

関連する問題