2013-11-27 97 views
1

我有一個包含'date'的行應該是'data'的多個文件,但只能在日期與行相同的行上進行更改「FIXME」用string2替換字符串只在行上以'// FIXME'開頭

find . -maxdepth 1 -type -f \(-name "*.cpp" -o -name "*.h" \) -exec grep FIXME {} \; | sed 's/date/data/g' 

將輸出的變化,但如果我添加-i到的sed我得到的錯誤。 所以我不能得到改變寫入磁盤這種方式。 我認爲這是因爲sed只能訪問緩衝區內容grep pull,並不知道它來自哪個文件。我正在猜測。 - 謝謝!

+0

你能不能做到'grep的 「日期* FIXME。」 | sed's/date/data/g''? –

+0

@ l19:OP想要替換原始文件。你的只是輸出替代結果。 – justhalf

+0

@justhalf,我的意思是說他可以從'-exec'開始編輯他的命令。 –

回答

0

刪除-maxdepth 1否則它不會遍歷子目錄。 sed命令也需要更正。試試這個:

find . -type f \(-name "*.cpp" -o -name "*.h" \) -exec sed -i.bak '/FIXME/s/date/data/g' '{}' \; 
+1

你是紳士和學者 - 謝謝你! – user1855481

+0

非常歡迎:) – anubhava

相關問題