「検索」結果をファイルリストにどのように渡すことができますか?

「検索」結果をファイルリストにどのように渡すことができますか?

状況は、mpg321ファイルリストをパラメータとして受け入れるMP3プレーヤーがあるということです。私は「音楽」というディレクトリに私の音楽を保存しましたが、そこにいくつかのディレクトリがあります。みんなで遊びたいので、プログラムを実行してみてください。

mpg321 $(find /music -iname "*\.mp3")

。問題は、いくつかのファイル名にスペースがあり、プログラムがこれらの名前をより小さな部分に分割し、ファイルの欠落について文句を言うことです。結果をfind引用符で囲みます。

mpg321 "$(find /music -iname "*\.mp3")"

すべてが明らかに見つからない1つの大きな「ファイル名」に変わるので役に立ちません。

どうすればいいですか?それが重要であれば、私はそれを使用していますが、bashすぐに切り替えます。zsh

ベストアンサー1

-print0次のようにfind'sまたはoptionを組み合わせて試してください。-printfxargs

find /music -iname "*\.mp3" -print0 | xargs -0 mpg321

これがどのように機能するかは、次のように説明されています。検索マニュアルページ:

-0を印刷してください。

Trueの場合、標準出力にファイル名全体を印刷し、その後にヌル文字(-printで使用される改行文字の代わりに)を印刷します。これにより、find 出力を処理するプログラムが改行またはその他の種類のスペースを含むファイル名を正しく解釈できます。このオプションは xargs の -0 オプションに対応します。

おすすめ記事