Dick.Guertin の回答 [1] は、ファイル名のスペースをエスケープできることが、ここで提案されている他の解決策 (空白ではなくヌル文字を区切り文字として使用するなど) の貴重な代替手段であることを示唆しています。しかし、それはもっと単純かもしれません - あなたは本当にユニークなキャラクターを必要としません. sed にエスケープしたスペースを直接追加させることができます:
ls | grep ' ' | sed 's| |\\ |g' | xargs ...
さらに、grep は、名前にスペースが含まれるファイルのみが必要な場合にのみ必要です。より一般的には (たとえば、スペースを含むファイルと含まないファイルのバッチを処理する場合)、grep をスキップします。
ls | sed 's| |\\ |g' | xargs ...
もちろん、ファイル名には空白以外の空白 (タブなど) を含めることができます。
ls | sed -r 's|[[:blank:]]|\\\1|g' | xargs ...
これは、GNU sed や bsd sed の最近のバージョンなど、-r (拡張正規表現) をサポートする sed があることを前提としています (たとえば、FreeBSD 8 より前にオプション "-E" を最初に綴り、互換性のために -r と -E の両方をサポートする FreeBSD)。少なくとも FreeBSD 11 まで)。[]
それ以外の場合は、基本的な正規表現文字クラスのブラケット式を使用して、区切り文字にスペースとタブ文字を手動で入力できます。
[1] これはおそらくその回答に対するコメントまたは編集としてより適切ですが、現時点ではコメントするのに十分な評判がなく、編集を提案することしかできません. 上記の後者の形式(grepなし)はDick.Guertinの元の回答の動作を変更するため、直接編集はおそらく適切ではありません。