2016-05-12 17 views
3

こんにちは私はここにこのコマンドを持っていますls -la | egrep '^-' | egrep '^([^ ]+[ ]+){8}[.]' | wc -l cwdに隠れた文書の数を表示します。上記のコマンドは、私が意味ls -la | egrep '^-' | tr -s ' ' | egrep '^([^ ]+[ ]+){8}[.]' | wc -lと同じ出力、適切なコマンドを記述することなく行うことができますどのように複数のスペースの削除を持っているのはなぜ隠しファイルを表示するコマンド

  • 第一qustion?

  • また、私は2番目のegrepの動作を100%理解していません。誰かが分かりやすく説明してくれます。

答えて

1
  1. TR -s '「: -

    それだけのスペースを抑制する。

    ls -laは、すべてのファイルとディレクトリとファイルを1行ずつ一覧表示します。

    したがって、trコマンドは新しい行を抑制しないため、出力に変更はありません。開始において

、入力ラインスペース以外の文字が含まれず、後には、1つの以上のスペースが含まれていること、これはグループです。そういうわけで、この8つのグループの後に。(ドット)が必要です。

例:-

egrepは次の行に一致します。

drwxxr---x 1 sureshkumar sureshkumar 4096 May 12 10:21 . 
drwxxr---x 1 sureshkumar sureshkumar 4096 May 12 10:21 .. 

次の行は一致しません。

-rw-rw-r-- 1 sureshkumar sureshkumar 6361 May 12 17:30 1.c 
-rwxrwxr-x 1 sureshkumar sureshkumar 12093 May 12 17:30 a.out 
-rw-rw-r-- 1 sureshkumar sureshkumar  0 May 12 17:30 a.txt 
-rw-r--r-- 1 sureshkumar sureshkumar 34326 May 12 10:58 ping.c 
-rw-r--r-- 1 sureshkumar sureshkumar 24951 May 12 15:48 ping_common.c 
-rw-r--r-- 1 sureshkumar sureshkumar 8002 May 11 17:26 ping_common.h 

単にegrepが隠しファイルとディレクトリに一致します。

+0

説明ありがとうございます:) –

1

これを1つずつお試しください。

  1. ls -laは、最後の変更を(隠し含む)すべてのファイルを出力し、それらの追加情報を を一覧表示し、ユーザーの権利として、スペース&。
  2. 最初のegrepは、 ディレクトリではなくファイルのみを出力するように指定しています。この文字で始まる はすべて「 - 」で始まると表示されるため、ファイルです。
  3. 文字のすべてのインスタンスを1文字(この場合は空白)に置き換えるために、trが使用されます。
  4. 最後のegrepは、隠しファイルと ディレクトリに一致し、実際には出現回数を意味する類似した行がいくつ見つかったかを出力するため、ディレクトリに同じ名前が何回見つかったかとファイル(もちろん、現在のディレクトリは です)。
関連する問題