ファイル名を別のプログラムにパイプしたいのですが、名前にスペースが含まれている場合はすべてブロックされます。
というファイルがあるとしましょう。
foo bar
find
正しい名前をどのように返すことができますか?
明らかに私が望むもの:
foo\ bar
または:
"foo bar"
編集する:私はそのようなことを経験したくありません。ファイル名文字列を別のプログラムに直接パイプできるように、xargs
正しい形式の文字列を取得したいと思います。find
ベストアンサー1
フロント:
find . -type f -exec sh -c '
for f do
: command "$f"
done
' sh {} +
find
以下のサポート-print0
とxargs
サポートがあります-0
。
find . -type f -print0 | xargs -0 <command>
-0
オプションは xargs にスペースの代わりに ASCII NUL 文字を使用して (別個の) ファイル名を終了するように指示します。
例:
find . -maxdepth 1 -type f -print0 | xargs -0 ls -l