find
およびが結果におよびls -l
をリストしないようにする方法はありますか? 出力にこの結果が表示されることは気にしていません。また、出力を に効果的にパイプして、正確にカウントすることもできなくなります。.
..
wc -l
念のため言っておきますが、私は で働いていますzsh
。
答え1
の場合ls
、-A
の代わりにを使用します-a
。
からman ls
:
-A, --almost-all
do not list implied . and ..
答え2
とzsh
:
count() echo $#
count * # non-hidden files (all types)
count *(D) # files (all types)
count **/*(D) # files recursively (all types)
count **/*(D/) # directories only (recursively)
( zsh
glob には、が有効になっている場合でも(globbing 修飾子の場合など) は含まれませ.
ん)。..
dotglob
(D)
ファイルがない場合にエラー メッセージが表示されないようにするには、N
グロブ修飾子を追加します。
count *(ND)
これにより、一致しない場合は、glob は何も展開されません (引数なし、空の引数ではない)。
改行文字はファイル名内の他の文字と同様に有効な文字であるため、ls
またはの出力をパイプすることfind
はwc -l
正しくないことに注意してください。
/
POSIX では、改行文字の代わりに文字をカウントできます。
find . ! -name . -prune -print | grep -c /
または、次のトリックを使用して再帰的に実行します。
find .//. ! -name . -prune -print | grep -c //
答え3
find
ドット ディレクトリを除外するには、次のようにします。
$ find . ! -path . -type d
例
$ find . ! -path . -type d | head -5
./.vim_SO
./.vim_SO/bundle
./.vim_SO/bundle/vim-fugitive
./.vim_SO/bundle/vim-fugitive/plugin
./.vim_SO/bundle/vim-fugitive/doc
...