2016-05-15 7 views
-1

grepコマンドと一致するファイルの内容を表示するにはどうすればよいですか?たとえば、私はそれが持っている普通のファイルを見るためにディレクトリをgrepします。次の行を使用して、通常のファイルのみを表示しました。grep普通のファイルをlinuxファイルシステムで表示し、その内容を表示

ls -lR | grep ^- 

次に、そこにあるファイルの内容を表示したいと思います。どうすればいいのですか?

答えて

0

それを行う方法はいくつかあります。あなたにここで簡単で清潔な方法をいくつか与えるつもりです。それらのすべてはスペースでファイル名を処理します。

$ find。 -type f -print0 | xargs -0 cat

-print0は、ヌル文字 '¥0'デリミタを追加し、nullデリミタを認識するためにxargs -0を呼び出す必要があります。そうしないと、ファイル名の空白が問題になります。

-print0なしファイル名:ABC 123.txt1.incは、3つの別々のファイルABC123.txt1.incとして読まれます。

-print0でこれはとなりABC 123.txt '\ 0'1.inc '\ 0'ABC 123.txt1.inc

として読まれます

xargsでは、入力としてパラメータとして受け入れることができます。コマンド1 | xargs command2は、command1の出力がcommand2に渡されることを意味します。

catは、ファイルの内容を表示します。

$ find。-t f -exec echo {} \; -exec cat {} \;

これは単にfindコマンドを使用しています。すべてのファイル(タイプf)を見つけ、echoを呼び出してファイル名を出力し、catを呼び出してその内容を表示します。

ファイル名を指定しない場合は、-exec echo {} \を省略します。

また、catコマンドを使用してfindの出力を渡すこともできます。

$ cat `find。 -type f -print`

複数のファイルの内容を1つずつスクロールしたい場合。あなたは使うことができます。

$ less `find。 -t type f -print`

lessを使うと、次のファイルと前のファイルのそれぞれにnと:pをナビゲートすることができます。 qを押すと終了します。

+0

うわー。最初のものは完璧に働いた。今私はあなたがそこで何をしたのか把握し、勉強する必要があります。私は本当にこれで新しいです。私はあなたの時間を多く感謝します。 –

1

私のようなものだろう:

  • は、最初のファイル区切りのフィールドに切り出さ
  • 全体の結果に逆
  • のgrepはあなたのパターン検出されたファイルを見つけることが

    $ cat `ls -lR | egrep "^-" | rev | cut -d ' ' -f 1 | rev` 
    
    • 使用LSをファイル名を取得する(スペースが問題のあるファイル)
    • ファイル名を通常の方向に戻す
    • Backticksはそれを実行し、ファイル名のリストをcatに返します。

    または私がおそらくそれを行う方法は、各ファイルを見るためにvimを使用することです。

    $ vim `ls -lR | egrep "^-" | rev | cut -d ' ' -f 1 | rev` 
    

    ファイルのみを再帰的に検索しようとしているように感じます。これは私がそれらの場合に行うことです:

    ​​3210
  • +0

    私は部品で試していましたが、私はこれで新しいです。私は名前だけを返しますが、ファイルを表示することはできません。 私は使用しました: 'ls -lR | grep^- | rev |カット-d "" -f 1 | rev ' 私は努力し続けます。 –

    +0

    コメントには前方一致が1つあります。バックティックを使用していない可能性はありますか?バックチックは、コマンドの結果を取得し、その結果をbashの変数として使用できるようにします。これは、catやvimがgrep操作からファイルのリストを受け取るようにするためです。 – edt11x

    +0

    私はバックチックを使用して、実際にはLinuxで私はなぜ私は笑を使用することができる唯一のものかわかりません。私は行を置くとき、それはファイルが存在しないと言います。私はそれを続けます。私はあなたの助けを本当に感謝します、私は多くを学んでいます。 –

    関連する問題