2012-02-22 23 views
0

私は、このコマンドを実行しています:SED - 「ファイル名が長すぎます」 - このエラーをスキップする方法はありますか?

cd /tmp;find/-maxdepth 2 -type f | xargs -0 sed -i 's/teststring1/finally/g' 

それがエラーを報告する地点に来るまで、ITプロセス:あまりにも長いファイル名。ドキュメントを調べると、1024バイトを超えるファイル名があるようです。とにかく、私はprint 0を使ってこれを抑えると思ったが、いいえ。単に停止するのではなく、エラーをスキップするコマンドはありますか?

+0

xargsの代わりに 'while read lines'にパイプすることができますか?そうすれば、失敗した行はスキップされ、他の行は続行されます。 – cmbuckley

+0

私は構文の権利を得ることができませんでした、あなたは私の仲間の文脈で私にコマンドを表示できますか? – user1166981

+0

このコマンドを手動で再入力しましたか? 'cd/tmp; find/'はちょっと面白く、' xargs(1) 'コマンドラインに' -0'があってもコマンドに '-print0'はありません。コマンドやコードを再入力しないでください。正当な理由でデバッグがはるかに難しくなります。コピー&ペーストしてください。 :) – sarnold

答えて

3
cd /tmp; 
find/-maxdepth 2 -type f -exec sed -i 's/teststring1/finally/g' {} \; 

{}は、各ファイル名に変更し、さらにそれらの名前にスペースを持つファイルのために働くことになります。

+0

さらに良いことに、 '-exec sed ... {} +'です。 –

関連する問題