如何向grep指定我要在遞歸搜尋時選擇路徑前綴?

如何向grep指定我要在遞歸搜尋時選擇路徑前綴?

例子。我有一個我正在尋找的詞,說“貓”。我知道這個詞可以位於目前工作目錄下的任何位置。所以我用grep -r,這給出了以下形式的結果:

./example_root/[dir1|dir2]/[SOME_ARBITRARY_SUBPATH]/cat_file,

在哪裡

貓文件

是包含該單字的文件“貓”。如果我只感興趣怎麼辦

/example_root/dir1/[whatever_path]

我的路徑的前綴?我該如何告訴它grep

答案1

我會嘗試

grep -rl cat directory | xargs dirname

在哪裡

  • grep -rl cat directory 遞歸搜尋 ( -r) 目錄中的 cat 和 ( -l) lisy 檔案。
  • | xargs dirname每個檔案都被「給予」dirname,從而刪除檔案部分。

答案2

@Kusalananda 在評論中的回答就是我想要的:就這樣做

grep -r 'cat' /example_root/dir1/

但是,如果您想檢索單字所在的目錄名稱,以下內容(歸功於@Archemar)會很方便。

grep -rl cat directory | xargs dirname

相關內容