"grep -rn" は、2 つの予測結果のうち 1 つだけを生成します。

ディレクトリ構造内の特定の単語を含むすべてのファイルを検索しようとしても機能しません。

  • たとえば、 path で実行すると、/Institute/IITDhanbad/次のコマンドが実行されます。
    grep -rn "Programmer" *
    
    結果は
    BTECH/CompScience.txt:22:    Sudip is a Programmer
    
  • ただし、パスで実行すると/Institute/IITDhanbad/MTECH同じコマンドが提供されます。
    CSP/Boys/Good/Electronics.txt:13:    Sourav is a Programmer
    

問題は、フォルダgrepから呼び出しを実行したときに予想される結果/Institute/IITDhanbad/は次のとおりです。両方結果は

BTECH/CompScience.txt:22:               Sudip is a Programmer
MTECH/CSP/Boys/Good/Electronics.txt:13: Sourav is a Programmer

何が間違っていて、どのように解決しますか?

追加情報:

  • ファイル形式とアクセス権は次のとおりです。

    文書 モデル
    MTECH drwxrwsr-x
    BTECH drwxrwsr-x
    CSP lrwxrwxrwx
  • ls -ld/Institute/IITDhanbad/パスから:

    drwxrwsr-x 4 suresh faculty 4096 Sep 16 00:53
    
  • ls -ld/Institute/IITDhanbad/MTECHパスから:

    drwxrwsr-x 4 suresh faculty 4096 Sep 16 00:53
    
  • ls -ld/Institute/IITDhanbad/MTECH/CSPパスから:

    dr-xr-sr-t 4 ganesh faculty 4096 Sep 12 20:58 .
    

ベストアンサー1

CSPシンボリックリンクです(参照llrwxrwxrwx。明らかgrepに、引数として与えられたもの以外のシンボリックリンクに従わないようです。-rこれを行うとき:

grep -rn "Programmer" *

CSP(上にあります/Institute/IITDhanbad/MTECH/か?)の親ディレクトリでは、CSPシェルが展開された後に引数として表示されます*。ただし、「親」ディレクトリ(in)/Institute/IITDhanbad/でこれを行う場合、これはパラメータでCSPはなく、grep再帰スキャン中に見つかったシンボリックリンクです。

これがGNUがどのようにgrep機能するかです。あなたはgrepGNUですかgrep?その場合は、マニュアルを参照してください-R-Rいい-rけどするシンボリックリンクに従ってください。

grep -rn "Programmer" .親ディレクトリで操作を実行した場合、CSPこれはCSPパラメータとして表示されません。の使用は*観察された結果にとって非常に重要です。

おすすめ記事