locate
「人が読める形式」(つまり、先行スペースなし)でパスリストを生成するコマンド出力など、コマンド出力を使用するときに出力を別のコマンド\
にリダイレクトするにはどうすればよいですか。
の出力は$ locate [something]
スペースを含むパスを生成するため、他のプログラムはスペースを含むパスを使用できません。たとえば、
$ du -h `locate *.doc`
これにより、スペースを含むすべてのファイルとディレクトリにエラーが発生します。 (空白でチックを包むことは機能しません)
ベストアンサー1
それを使用する具体的な理由は何ですかlocate
?これはあなたの要件を満たすようです。
find . -type f -name '*doc' -exec du -h "{}" \;
つまり、本物locate
あるいは、同じツールを使用してその入力を別のプログラムに引数として渡したい場合は、一部のツールが提供する別々の出力と入力を find
利用できます。そして、両方とも読み取り用に設計されたよりプログラム的に使いやすい出力を得るためのオプション( 'sと's )があります。NUL
locate
find
locate
-0
find
-print0
xargs
それ -0
ディスカッション:
find . -type f -name '*doc' -print0 | xargs -0 du -h
locate -0 '*doc' | xargs -0 du -h