特定のディレクトリ内のフォルダ数を数える方法。次のコマンドを使用していますが、常に追加のコマンドが提供されます。
find /directory/ -maxdepth 1 -type d -print| wc -l
たとえば、3 つのフォルダーがある場合、このコマンドは 4 を提供します。5 つのフォルダーが含まれている場合、コマンドは 6 を提供します。なぜですか?
find
ディレクトリ自体も出力しています:
$ find .vim/ -maxdepth 1 -type d
.vim/
.vim/indent
.vim/colors
.vim/doc
.vim/after
.vim/autoload
.vim/compiler
.vim/plugin
.vim/syntax
.vim/ftplugin
.vim/bundle
.vim/ftdetect
代わりに、ディレクトリの子をテストし、それらにまったく降りないようにすることができます。
$ find .vim/* -maxdepth 0 -type d
.vim/after
.vim/autoload
.vim/bundle
.vim/colors
.vim/compiler
.vim/doc
.vim/ftdetect
.vim/ftplugin
.vim/indent
.vim/plugin
.vim/syntax
$ find .vim/* -maxdepth 0 -type d | wc -l
11
$ find .vim/ -maxdepth 1 -type d | wc -l
12
次のものも使用できますls
。
$ ls -l .vim | grep -c ^d
11
$ ls -l .vim
total 52
drwxrwxr-x 3 anossovp anossovp 4096 Aug 29 2012 after
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 autoload
drwxrwxr-x 13 anossovp anossovp 4096 Aug 29 2012 bundle
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 colors
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 compiler
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 doc
-rw-rw-r-- 1 anossovp anossovp 48 Aug 29 2012 filetype.vim
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 ftdetect
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 ftplugin
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 indent
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 plugin
-rw-rw-r-- 1 anossovp anossovp 2505 Aug 29 2012 README.rst
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 syntax
$ ls -l .vim | grep ^d
drwxrwxr-x 3 anossovp anossovp 4096 Aug 29 2012 after
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 autoload
drwxrwxr-x 13 anossovp anossovp 4096 Aug 29 2012 bundle
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 colors
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 compiler
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 doc
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 ftdetect
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 ftplugin
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 indent
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 plugin
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 syntax
現在のディレクトリ内のディレクトリのみのカウントを取得します
echo */ | wc
あなたは次のように出てきます1 309 4594
2nd digit
いいえを表します。ディレクトリの。
また
tree -L 1 | tail -1
find . -mindepth 1 -maxdepth 1 -type d | wc -l
検索-mindepth
の場合、ディレクトリ内の再帰的な総数を意味します
-maxdepth
ディレクトリ内の総再帰数を意味します
-type d
ディレクトリを意味します
そして forwc -l
手段は入力の行を数えます
フォルダーにディレクトリしかなく、ファイルがない場合は、次のようにします。
ls | wc -l
ドライブに移動して簡単に実行するための最良の方法
ls -lR | grep ^d | wc -l
サブディレクトリを含むすべてのフォルダを合計で検索するには?
find /mount/point -type d | wc -l
...またはルート ディレクトリ (サブディレクトリを除く) 内のすべてのフォルダーを検索しますか?
find /mount/point -maxdepth 1 -type d | wc -l
乾杯!
実行stat -c %h folder
して、結果から 2 を引きます。これは、ここでの他のほとんどのソリューションで必要とされる 2 つ (または 3 つ) とは対照的に、単一のサブプロセスのみを使用します (通常はfind
plus wc
)。
sh/bash の使用:
cnt=$((`stat -c %h folder` - 2))
echo $cnt # 'echo' は sh/bash ビルトインであり、追加のプロセスではありません
csh/tcsh の使用:
@ cnt = `stat -c %h folder` - 2
echo $cnt # 'echo' は csh/tcsh 組み込みであり、追加のプロセスではありません
説明:フォルダーstat -c %h folder
へのハードリンクの数を出力し、フォルダーの下の各サブフォルダーには、フォルダーへのハードリンクである ../ エントリが含まれます。カウントにはさらに 2 つのハードリンクがあるため、2 を引く必要があります。
以下のコマンドを使用して見つけることができるディレクトリの数
ls -l | grep "^d" | wc -l
使用zsh
:
a=(*(/N)); echo ${#a}
はN
nullglob であり、/
ディレクトリと一致させ、#
カウントします。ディレクトリ名のスペースにきちんと対処し、ディレクトリ0
がない場合は戻ります。