find . -type f | xargs file | grep text | cut -d':' -f1 | xargs grep -l "TEXTSEARCH" {}
這是一個很好的解決方案嗎?爲找到TEXTSEARCH遞歸僅文本文件僅grep文本文件
find . -type f | xargs file | grep text | cut -d':' -f1 | xargs grep -l "TEXTSEARCH" {}
這是一個很好的解決方案嗎?爲找到TEXTSEARCH遞歸僅文本文件僅grep文本文件
可以在grep
使用-r
(遞歸)和-I
(忽略二進制)選項:
$ grep -rI "TEXTSEARCH" .
-I
處理的二進制文件,就好像它沒有不包含匹配數據;這相當於--binary-files=without-match
選項。-r
遞歸讀取每個目錄下的所有文件;這相當於-d recurse
選項。
這是正確的答案。 – PhiloSurfer 2012-11-29 20:07:54
@PhiloSurfer:只需投票。 ;) – 2013-06-25 22:49:19
不,這個不能忽略特殊文件,就像unix socket – hylepo 2014-12-25 08:21:27
另外,比kevs不太優雅的解決方案,就是以連鎖-exec命令中發現一起,沒有xargs的切:
find . -type f -exec bash -c "file -bi {} | grep -q text" \; -exec grep TEXTSEARCH {} ";"
請您接受數十億upvotes,而不是答案嗎? – 2015-04-15 10:27:02
好的,謝謝@Zoltán – StefanoCudini 2015-04-15 19:26:53