検索コマンドを使用

検索コマンドを使用

私は多くのディレクトリを持っています。このディレクトリには、紹介書とzip作業ファイルが含まれています。作業フォルダを調べる価値があるかどうかを判断できるように、迅速で簡単なクエリを実行してすべての紹介書を開きます。

find . | grep cover\.pdf | xargs open    #OS X has open linked to "open" the file

これはうまくいきません。私も成功しなかったので、print0さまざまなバリエーションを試しましたxargs -0。これを行う正しい方法は何ですか?

答え1

まず、Mac-OSXコンピュータで実際に使用されているバージョンを確認してくださいfindxargsおそらくBSD / GNUの動作/オプションを期待し、GNU / BSDバージョンを使用することもできます。

分からない開いている複数のパラメータをサポートします。次のように呼び出されない場合xargs:

xargs -n 1 open

(これはxargsが各引数に対して追加のオープンプロセスを実行することを意味します)

ファイル名/パスにスペースが含まれていないfind | xargs-print0/-0失敗すると予想されます。

ああ、次のようなものを使うと

find -print0 | grep something | xargs -0 foo

そしてgrepすべてのキャラクターに混乱を経験しました\0

GNUはgrep(少なくとも)この-zオプションを知っています。したがって、機能する必要があるのは次のとおりです。

find -print0 | grep -z something | xargs -0 foo

grepどのバージョンを使用しているか確認してください。

grep --version

または(0文字)サポートgrepについては、マニュアルページを確認してください。\0

答え2

これは働きます:

探す。 - 名前カバー\.pdf -exec '{}'を開く\;

次のようにテストできます。

探す。 - 名前カバー\.pdf -exec ls -l '{}' \;

OSXでは、マニュアルページがどのように見えるかはわかりませんが、例を検索すると、Finding Man Pagesにさまざまな例があります。私はしばしばこれをチェックすることによって私の脳をさわやかにします。

答え3

システムのxargsが-nオプションをサポートしている場合は、次のことを試すことができます。

find . | grep cover\.pdf | xargs -n 1 open

関連情報