2012-07-25 19 views
22

私のアプリケーションで行数を取得したい。これは、他のアプリケーションで正常に動作しているが、私のアプリケーションのいずれかのために、それはエラーを与えている端末の行数を印刷しようとすると「xargs unterminated quote」エラーが発生する

find . "(" -name "*.m" -or -name "*.h" ")" -print | xargs wc -l 

「終端されていない引用符をxargsの」:私はこのコードを使用しています。

答えて

49

ファイル名の1つに引用符がありますか?このような何かを試してみてください:

find . "(" -name "*.m" -or -name "*.h" ")" -print0 | xargs -0 wc -l 

-print0引数は、それが出て印刷し、それぞれの名前を終了するためにNULL文字を使用するfindに指示します。 -0引数は、入力トークンがNULLで終了することをxargsに伝えます。これにより、引用符のように特別な扱いを受ける文字の問題を回避できます。

+0

は、私はすべての.svnフォルダを削除しようとした下記の私のために働いているゲイリー – Lena

+3

どうもありがとうございます「任意のエイリアスせずにコマンドを実行する」を意味します ./見つけます - 名前 ".svn" -print0 | xargs -0 rm -Rf –

+0

いくつかの説明を歓迎します;) – AsTeR

7

あなたがどこかにファイル名に単一引用符を持っているので、これは起こることができます...

すなわち - >'

問題のあるファイルを検索するには、ターミナルで以下のコマンドを実行します。

\find . | grep \' 

この問題は、問題の原因となっているxargsセットアップのエイリアスがある場合にも発生します。これが正しいかどうかをテストするには、xargsの前に '\'を付けてxargsを実行します。

\find . | \xargs .... 

「\」は単に

関連する問題