Shell-Script
我可以修改此搜尋命令以忽略二進製文件嗎?
我有這個命令,它是由我編寫的一個名為“scan”的小腳本生成的,我一直使用它來查找文本文件中的特定內容(變數名等):
find "." \ | awk '{print "\""$0"\""}' \ | xargs grep -n --exclude-dir=.git "<iframe" \ | awk 'length($0) < 1000'
例如,我在這裡使用它來搜尋 iframe 開始標籤。
最後一行告訴它只考慮長度小於 1000 個字元的行,因為行長的文件通常是二進製文件或連接的 javascript,我通常對此不感興趣。(如果我可以使用選項關閉該條件確實想看到長線)。
有沒有更好的方法來修改它以排除二進製文件?或者,我最好明確列出我希望它忽略的文件類型,如 .mp4、.mp3、.swf、.jpg、.png 等?
man grep
告訴我:--binary-files=TYPE
如果文件的前幾個字節表明該文件包含二進制數據,則假定該文件的類型為
TYPE。預設情況下, TYPE 是
binary
,並且 grep 通常輸出一條消息,說明二進製文件匹配,或者如果不匹配則不輸出消息。如果 TYPE 為without-match
,則 grep 假定 >binary 文件不匹配;這相當於-I
選項。如果 TYPE 是text
, grep 將二進製文件當作文本處理;這相當於-a
選項。警告:grep --binary-files=text
可能會輸出二進制垃圾,如果輸出是終端並且終端驅動程序將其中的一些解釋為命令,則可能會產生令人討厭的副作用。所以看起來
-I
可能對你有用?(請注意,文件中的任何非 ASCII 字元完全有可能grep
會混淆。)哦,我認為您真的不需要首先
gawk
,find … -exec
應該使用它,可能可以-0
選擇以空字節終止找到的文件名。