質問: 「検索」の結果をファイルのリストとして渡す方法は? 状況は、mp3プレーヤーを持っているということですmpg321は、ファイルのリストを引数として受け入れます。私は「music」という名前のディレクトリに音楽を保存します。このディレクトリには、さらにいくつかのディレクトリがあります。全部プレイしたいので、mpg321 $(find /music -iname "*\.mp3") 。問題は、一部のファイル名に空白が含まれていて、プログラムがそれらの名前を小さな部分に分割し、欠落しているファイルについて文句を言うことです。 findの結果を引用符で囲むmpg321 "$(find /music -iname "*\.mp3")" すべてが1つの大きな「ファイル名」になりますが、これは明らかに見つかりません。どうすればこれを行うことができますか?それが重要であれば、私はbashを使用していますが、まもなくzshに切り替えます。
回答: 次のように、findの-print0または-printfオプションをxargsと組み合わせて使用してみてください。find /music -iname "*\.mp3" -print0 | xargs -0 mpg321 これがどのように機能するかは マニュアルページを見つける で説明されています: -print0 真;標準出力に完全なファイル名を出力し、その後に(-printが使用する改行文字の代わりに)ヌル文字を出力します。これにより、改行またはその他の種類の空白を含むファイル名が、find出力を処理するプログラムによって正しく解釈されます。このオプションは、xargsの-0オプションに対応します。