2009-10-22 82 views

回答

1

怎麼樣(全部在一行上):

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' 
+0

感謝解決方案。但控制似乎進入某種無限循環,創建文件如filename.old filename.old.old,filename.old.old.old等。如何修改它,使無備份(.old )文件是生成的? 很多thx。 – novice 2009-10-22 09:18:15

+0

爲什麼你不使用'-maxdepth'? '找。 -maxdepth 1 -type f -name「* .xml」-print' - 另外,你應該在xargs中用'find'和'-0'來使用'-print0'。 – 2009-10-22 13:15:58

+0

丹尼斯 - 並非所有的發現都是平等的。有些人沒有maxdepth :-( 新手 - 要擺脫.old文件,將perl -i.old更改爲perl -i(以爲這意味着如果您的正則表達式錯誤,則您沒有備份到還原爲) – toolkit 2009-10-22 22:07:37

0

用sed(1)。

一般是比較安全的使用XSLT處理器按摩XML文件,但在這個特殊的例子,一些「時髦」的XML表示引起問題的機會是相當遙遠......

相關問題