大きなCプロジェクトでいくつかのファイルを修正するためのRubyコードを書いていました。 そして、私はこれを書いた -split( " n")が動作しない、またはエラーをスローしない
x = `find $PWD/ | grep "\.h"`
x = x.split("\n")
...
私のコードは、なぜこれが、新しい行に分割しないでください?
大きなCプロジェクトでいくつかのファイルを修正するためのRubyコードを書いていました。 そして、私はこれを書いた -split( " n")が動作しない、またはエラーをスローしない
x = `find $PWD/ | grep "\.h"`
x = x.split("\n")
...
私のコードは、なぜこれが、新しい行に分割しないでください?
あなたの分割はOKであり、あなたはそれがなかった証拠を持っていないが、あなたのシェルコマンドは、おそらくあなたが期待するものを行うので、私はそれについてはコメントせません。あなたは明らかにCヘッダファイル(.h
で終わるファイル)の一覧は、しかしたい
:
$PWD
はあなたが$PWD
=>find
にホワイトスペースを持っている場合は、あなたの悩みの原因となる引用されていませんがそこだと思いますパラメータにいくつかのディレクトリがあります\.h
はrubyで引用されず、ちょうど.h
としてgrep
に渡されます。魔法使いは「任意の文字の後に 'h'」を意味します。リテラル検索にはgrep -F .h
を使用してください。grep
は、文字列のどこにでも.h
を検索します。あなただけ.h
で終わるファイルをしたい場合は、(当時grep
、ないgrep -F
で).h$
をgrepしなければならないfind+grep
、名前だけで見つける:find -name "<pattern>"
。より簡単で、軽く、より安全。環境についての行が\n
(LF)で終了していないものをfind
は、この文字の上に\0
と分割してファイル名を分離しているfind -print0
再びは、結果のプログラムは私見であるべきものです=>:
x = `find "$PWD" -name "*.h" -print0`
x = x.split("\0")
それはどういうわけか、それは私の端末の失敗であり、別のものを使っているのです –
注: '-print0'は非標準の拡張です。すべての「発見」がそれを持っているわけではありません。 –
x.countの値は? – codeforester
'find $ PWD/|の結果の例を示します。 grep "\ .h" ' –
@YuHaoあなたは今見てみることができますか? –