web-dev-qa-db-ja.com

「ls」を1レベルだけ深くする方法は?

データを含む多くのサブディレクトリがあり、どのジョブ(サブディレクトリ)を持っているかの短いリストが必要です。次のコマンドに満足していません。

$ ls H2*
H2a:
energy.dat overlap.dat 
norm.dat zdip.dat ...
(much more)
H2b:
energy.dat overlap.dat
norm.dat zdip.dat ... 
(much more)

この不要な混乱は、ワイルドカードの目的を無効にします(出力を制限します)。出力を1レベルの深さに制限するにはどうすればよいですか?次の出力を確認したい

H2a/ H2b/ H2z/

あなたの助けをありがとう、ニック

26
Nick Vence

これを試して

ls -d H2*/

-dオプションは「ディレクトリのみ」をリストすることになっていますが、それだけでリストします

.

個人的には奇妙だと思います。ワイルドカードは、ディレクトリの実際のリストを取得するために必要です。

[〜#〜] update [〜#〜]:@Philippが指摘するように、bashを離れることなく、より簡潔にこれを行うことができます

echo H2*/

違いは、lsが項目を別々の行に出力することです。これは、他の関数へのパイプ処理に役立つことがよくあります。

37
harpo

あなたはのようなfindの使用を検討する必要があります

find . -type d -maxdepth 1 -name "H2*"
15
ajreal
echo H2*

拡張を行うのはBashなので、lsも必要ありません。

H2で始まるファイルとディレクトリの両方がある場合は、スラッシュを追加して、グロブをディレクトリに制限できます。

echo H2*/
11
Philipp

http://mama.indstate.edu/users/ice/tree/ にあるSteve Bakerのtreeを使用してくださいls。 1つの階層のディレクトリを一覧表示するには:

tree -adi -L 1 H2*
3
user1388236

多分これはあなたが探しているものですか?

ls | grep H2*
3
Adam J. Forster