grepはファイルを見つけて一致する結果を開きます。

grepはファイルを見つけて一致する結果を開きます。

コマンドラインでgrepの一部の戻り値に基づいてすべてのファイルを開こうとします。ファイル名のみを返すオプションが利用可能であることを知っていますが、-lそれを他の一連のフラグまたはパラメータと組み合わせてそのファイルへのフルパスを作成したいと思います。

私は同様のことを試しました:

find . -iname "*.ext" | xargs grep -l "mystring" | xargs open

そして次のように:

grep -HR -l mystring . | xargs open

しかし、ほとんど成功していませんでした。また、すべてのサブディレクトリに再帰したいと思います。私は見たこの問題、これは完全に関連していません。

修正する:

私はこのような仕事をすることができました

grep -HR -l mystring . | xargs -L 1 open

問題は、多くのファイルに対してコマンドラインが2つの方法で文句を言うことです。

LSOpenURLsWithRole() failed with error -1712 for the file /Users/blah/blah.ext

The files /blah/blah/file.ext do not exist、パスにスペースがある場合。

ベストアンサー1

ファイル名にスペースが含まれている場合は、print0fileオプション、それ以降の-0オプションxargs、最後に-I {}2番目のオプションを使用する必要がありますxargs

find . -iname "*.maxpat" -print0 | xargs -0 grep -l "mystring" | xargs -I '{}' open '{}'

emacsコマンドでテストしますopen

おすすめ記事