このコマンドはありますが、その機能を理解していません。
ls -Ra | grep -cve/ -e'^\.*$'
「find」コマンドを使用して同じことを行うにはどうすればよいですか?
ベストアンサー1
2つの部分に分けます。
ls -Ra
すべての(-a)ファイルを再帰的に(-R)リストします。 -a は「.」で始まるファイルを意味します。正常に表示されない文字が含まれます。 -R は、ls で見つかったすべてのサブディレクトリも、その中にあるすべてのサブディレクトリとともに一覧表示されるという意味です。
grep -cve/ -e'^\.*$'
-cはマップされた行数(この場合はlsで生成されたファイル)を返し、-vは検索するパターンを反転することを意味します。 「/」と「^.*$」の2つのモードがあります。最初のパターンは、サブディレクトリを一覧表示する行になる "/"文字を含む行と一致します。 2番目のパターンは「。」名前が0個以上のファイルと一致します。数値。
検索は逆順で行われるため、両パターンのいずれとも一致しない行が出力されることを意味します。そして-cオプションが指定されているので、これは印刷されます。数字比類のないライン。
「find」コマンドを使用して同じことをどのように実行できますか?」と尋ねる場合があります。
findコマンドはカウントを出力しないため、次のように "wc"にパイプする必要があります。
find . | wc -l
これには「.」が含まれます。しかし、したがって、"ls | grep"バージョンよりも答えが1つ多くなります。
マイコンピュータのディレクトリから:
mmusante$ ls -Ra | grep -cve/ -e'^\.*$'
170594
mmusante$ find . | wc -l
170595
mmusante$