Command-Line

在所有子目錄中查找給定文件類型中字元串的最後一次出現

  • December 5, 2015

我有多個子目錄,每個子目錄都有不同的深度。*.out我需要在特定文件類型(比如)中搜尋最後一次出現的字元串。我怎樣才能做到這一點?

我試過了:

grep -r 'string' **/*.out | tail -1

但這只給了我最後一個文件的最後一個字元串。

我將使用類似的東西:

for i in `find . -name "*.out" -type f`;
do
grep -l 'string' $i
grep 'string' $i|tail -1
done

使用第一個 grep,您將擁有文件名以及以下(第二個 grep)內容。

只要文件名不包含空格或\[*?. 有關強大的解決方案,請參閱cuonglm 的答案

假設您在子目錄的父目錄中:

find . -type f -name '*.out' -exec sh -c '
 for f do
   grep "string" /dev/null "$f" | tail -n 1
 done
' sh {} +

引用自:https://unix.stackexchange.com/questions/202065