0
我在一個目錄中有1000個文件。我是一個Solaris機器上使用shell命令查找並替換一組xml文件中的字符串
我想要替換字符串「/例子/測試/ TEMP」 T0「/測試/中/進度/在我的目錄中的所有XML文件。
任何指針將是巨大的。
感謝,
新手
我在一個目錄中有1000個文件。我是一個Solaris機器上使用shell命令查找並替換一組xml文件中的字符串
我想要替換字符串「/例子/測試/ TEMP」 T0「/測試/中/進度/在我的目錄中的所有XML文件。
任何指針將是巨大的。
感謝,
新手
怎麼樣(全部在一行上):
find . \(-type d ! -name . -prune \) -o \(-type f -name "*.xml" -print \) |
xargs perl -i.old -p -e 's-/example/test/temp-/testing/in/progress/-g'
用sed(1)。
一般是比較安全的使用XSLT處理器按摩XML文件,但在這個特殊的例子,一些「時髦」的XML表示引起問題的機會是相當遙遠......
感謝解決方案。但控制似乎進入某種無限循環,創建文件如filename.old filename.old.old,filename.old.old.old等。如何修改它,使無備份(.old )文件是生成的? 很多thx。 – novice 2009-10-22 09:18:15
爲什麼你不使用'-maxdepth'? '找。 -maxdepth 1 -type f -name「* .xml」-print' - 另外,你應該在xargs中用'find'和'-0'來使用'-print0'。 – 2009-10-22 13:15:58
丹尼斯 - 並非所有的發現都是平等的。有些人沒有maxdepth :-( 新手 - 要擺脫.old文件,將perl -i.old更改爲perl -i(以爲這意味着如果您的正則表達式錯誤,則您沒有備份到還原爲) – toolkit 2009-10-22 22:07:37