Command-Line
在所有子目錄中查找給定文件類型中字元串的最後一次出現
我有多個子目錄,每個子目錄都有不同的深度。
*.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 {} +