私は多くのディレクトリを持っています。このディレクトリには、紹介書とzip作業ファイルが含まれています。作業フォルダを調べる価値があるかどうかを判断できるように、迅速で簡単なクエリを実行してすべての紹介書を開きます。
find . | grep cover\.pdf | xargs open #OS X has open linked to "open" the file
これはうまくいきません。私も成功しなかったので、print0
さまざまなバリエーションを試しましたxargs -0
。これを行う正しい方法は何ですか?
答え1
まず、Mac-OSXコンピュータで実際に使用されているバージョンを確認してくださいfind
。xargs
おそらく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