當我嘗試更換一個網址時,出現以下錯誤消息?在給定目錄中的所有文件中替換URL的有效方法是什麼?使用shell腳本替換網址
sed: -e expression #1, char 62: unknown option to `s'
find . -name '*' | xargs sed -i 's/old_url/new_url/g'
沒有工作
當我嘗試更換一個網址時,出現以下錯誤消息?在給定目錄中的所有文件中替換URL的有效方法是什麼?使用shell腳本替換網址
sed: -e expression #1, char 62: unknown option to `s'
find . -name '*' | xargs sed -i 's/old_url/new_url/g'
沒有工作
這裏有一個辦法做到這一點在Perl。
cd directory
perl -pi -e 's!old_url!new_url!g;' *
或者使用find
在你原來的問題:
find . -type f -exec perl -pi -e 's{old_url}{new_url}g' {} +
如果Perl是在告訴你「沒有這樣的文件或目錄,」這可能是因爲你無意中省略-e
編輯:由於TLP指出您正在使用網址,因此將s///g
s更改爲s{}{}g
。
編輯:更改\;
到+
每ikegami的建議。
最根本的問題是可能是你指定如
s/http://example.com/ick/poo/http://example.net/also/not/
這不是一個有效的sed
或perl
腳本,顯然頗爲曖昧的東西。使用不在正則表達式或替換中任何位置的備用分隔符;一個流行的選擇是!
s!http://example.com/ick/poo!http://example.net/also/not!
這兩個sed
和perl
有效。
編輯到@TLP的榮譽也可以在評論中對此進行診斷。如果您發佈了類似的信息,我會刪除此答案。
我對這些榮譽感到滿意。好答案。 – TLP
在命令行中試過也無法打開perl腳本「s/http:old_url/http:// new_url /」:沒有這樣的文件或目錄 – sharp
使用另一個分隔符的'///'可能會是使用網址時好主意。 – TLP
@sharp,你沒有使用'-e'如果你有這個 – ikegami