xargs でスペースを含むファイル名を処理できるようにする 質問する

xargs でスペースを含むファイル名を処理できるようにする 質問する
$ ls *mp3 | xargs mplayer  

Playing Lemon.  
File not found: 'Lemon'  
Playing Tree.mp3.  
File not found: 'Tree.mp3'  

Exiting... (End of file)  

ファイル「Lemon Tree.mp3」にスペースが含まれているため、xargs はそれを 2 つのファイルと認識し、コマンドが失敗します。このようなファイル名で find + xargs を動作させることはできますか?

ベストアンサー1

このxargsコマンドは、空白文字 (タブ、スペース、改行) を区切り文字として使用します。

-d次のようなオプションを使用して、改行文字 ('\n') のみに絞り込むことができます。

ls *.mp3 | xargs -d '\n' mplayer

GNU xargs でのみ動作します。

MacOSの場合:

ls *.mp3 | tr \\n \\0 | xargs -0 mplayer

より単純で実用的に役立つアプローチ (ファイル名をさらに処理する必要がない場合):

mplayer *.mp3

おすすめ記事