1

sed と grep を使用して、boost::shared_ptr を検索して std::shared_ptr に置き換えています。を避けるにはどうすればよいですegrep.svn。ローカルの破損につながる:

Transmitting file data .svn: E155017: Commit failed (details follow):
svn: E155017: Working copy text base is corrupt
svn: E200014: Checksum mismatch for text base of '/home/jeffrey/owasp-esapi-cplusplus/doc/html/_codec_8cpp_source.html':
   expected:  09ead67f10a06a392ec41455179da560
     actual:  310ceca1a9c721b40db494f62854d2df

ジェフ

4

2 に答える 2

4

ファイルを検索する代わりにackを使用することをお勧めします。grepと同じ基本オプションを取りますgrep

.svnデフォルトでは、.git...ディレクトリとバイナリをスキップします。

例 :

ack -rl --print0 "pattern" . | xargs -0 -l sed -i 's/pattern/other_pattern/g'

最後に:

ack -rl --print0 "boost::shared_ptr" . |
    xargs -0 -l sed -i 's/boost::shared_ptr/std::shared_ptr/g'
于 2012-11-18T20:52:10.623 に答える
2

試しfindてみてくださいxargs

find /path/to/basedir -name .svn -prune -o -iname '*.h' -print0 , -iname '*.cpp' -print0 | xargs -0 sed -i 's/boost::shared_ptr/std::shared_ptr/g'
于 2012-11-18T21:01:01.767 に答える