2017-05-22 65 views
0

如何找到符合某種字符串的第一行一個文件名的第一線?慶典:獲取文件名匹配字符串模式

到目前爲止,我已經拿出

find . -type f -exec grep -l "MAGIC_WORD" {} \;

但對於整個文件中的所有行MAGIC_WORD搜索,而我只是在尋找與在第一行該模式的文件。

我也許應該以某種方式使用head -1但不知道如何將它與find -exec混合並返回正確的文件名

回答

0

這聽起來很瘋狂,因爲你想閱讀機器上的每個文件。

for filename in "$(find . -type f)" 
do 
    line=$(head -n 1 "$filename") 
    if grep -q "MAGIC WORD" <<< "$line" 
    then 
     printf "$filename" 
    fi 
done 

-q選項返回的grep的退出狀態。如果我沒有記錯,它返回 (這意味着真)如果找到模式或任何其他整數如果失敗(這意味着假)

我所做的是創建與文件的所有路徑列表,然後爲每一個我檢查,如果他們的第一線的模式匹配,如果是,我打印的文件路徑爲好。我不知道,如果你只需要在文件名不帶路徑。