0
如何找到符合某種字符串的第一行一個文件名的第一線?慶典:獲取文件名匹配字符串模式
到目前爲止,我已經拿出
find . -type f -exec grep -l "MAGIC_WORD" {} \;
但對於整個文件中的所有行MAGIC_WORD
搜索,而我只是在尋找與在第一行該模式的文件。
我也許應該以某種方式使用head -1
但不知道如何將它與find -exec
混合並返回正確的文件名
如何找到符合某種字符串的第一行一個文件名的第一線?慶典:獲取文件名匹配字符串模式
到目前爲止,我已經拿出
find . -type f -exec grep -l "MAGIC_WORD" {} \;
但對於整個文件中的所有行MAGIC_WORD
搜索,而我只是在尋找與在第一行該模式的文件。
我也許應該以某種方式使用head -1
但不知道如何將它與find -exec
混合並返回正確的文件名
這聽起來很瘋狂,因爲你想閱讀機器上的每個文件。
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的退出狀態。如果我沒有記錯,它返回 (這意味着真)如果找到模式或任何其他整數如果失敗(這意味着假)。
我所做的是創建與文件的所有路徑列表,然後爲每一個我檢查,如果他們的第一線的模式匹配,如果是,我打印的文件路徑爲好。我不知道,如果你只需要在文件名不帶路徑。