回答:
ドライブに移動して実行するだけです
ls -lR | grep ^d | wc -l
grep -c
の上にwc -l
。たぶんそれは私だけです。
\nd
(\n
NL文字は)、上記はオーバーカウントされます。
ls
出力はパイプされることになっていない。さらに、ツリー全体を出力してからgrepを実行する必要があるため、これは非常に遅くなります
サブディレクトリを含む、すべてのフォルダーを合計で検索しますか?
find /mount/point -type d | wc -l
...またはルートディレクトリ内のすべてのフォルダを検索します(サブディレクトリは含みません)?
find /mount/point -maxdepth 1 -type d | wc -l
*foo*
イタリック体にするために使用:foo)
find /path -not -iname '*.mp3' | wc -l
フィルタMP3ファイルに、または両方のMP3やWAVファイルの使用を得るためにfind /path -not -iname '*.mp3' -not -iname '*.wav' | wc -l
改行は、ディレクトリ名の有効な文字です。find
見つかったディレクトリごとに空の行を印刷してから、wc
それらの行をカウントすることをお勧めします。
find /mount/point -type d -printf '\n' | wc -l
以下を試してください[以下を参照]:
ls -1 -p | grep "/" | wc -l
これにより、サブディレクトリであるアイテムの末尾にスラッシュが付いた現在のディレクトリの1列のリストが出力され、スラッシュのある行がカウントされます。
編集:あなたはおそらくもう少し明示的であるので、おそらくquack quixoteの答えに行くべきですが、私は(quackの提案を考慮に入れた後)修正しました。
ls -Rp | grep "/$" | wc -l
-1
ので、LSはパイプを検出し、列をフォーマットしません。また、を使用して再帰的なリストを取得することもできますが-R
、その後、"/$"
末尾のスラッシュにのみ一致するようにgrepを実行する必要があります(またはカウントがオフになります)。最終バージョン:ls -Rp | grep "/$" | wc -l
.
(つまり/mount/point
)カウントされますが、上記のコメントのlsバージョンはカウントされません。それらのカウントは1だけ異なり/mount/point/*
、findコマンドでそれを修正するために使用できます(隠れたドットディレクトリがないと仮定)。
多数のディレクトリがある場合、次のようなツールtree
は終了またはハングアップするまでに時間がかかる場合があるため、より効率的なものを使用することができます。
私が考えることができるディレクトリを数える最も効率的な方法は次のようになります。完全なパスとファイル名ではなく、見つかったフォルダごとにfind
1つだけを印刷し、文字数だけ繰り返す必要があるからです。.
wc
find /mount/point -type d -printf '.' |wc -c
/mount/point
計算から自身を除外し、サブディレクトリのみをカウントするには:
find /mount/point -mindepth 1 -type d -printf '.' |wc -c