人間が読めるパスのリストを別のコマンドにリダイレクトする方法は?

人間が読めるパスのリストを別のコマンドにリダイレクトする方法は?

locate「人が読める形式」(つまり、先行スペースなし)でパスリストを生成するコマンド出力など、コマンド出力を使用するときに出力を別のコマンド\にリダイレクトするにはどうすればよいですか。

の出力は$ locate [something]スペースを含むパスを生成するため、他のプログラムはスペースを含むパスを使用できません。たとえば、

$ du -h `locate *.doc`

これにより、スペースを含むすべてのファイルとディレクトリにエラーが発生します。 (空白でチックを包むことは機能しません)

ベストアンサー1

それを使用する具体的な理由は何ですかlocate?これはあなたの要件を満たすようです。

find . -type f -name '*doc' -exec du -h "{}" \;

つまり、本物locateあるいは、同じツールを使用してその入力を別のプログラムに引数として渡したい場合は、一部のツールが提供する別々の出力と入力を find利用できます。そして、両方とも読み取り用に設計されたよりプログラム的に使いやすい出力を得るためのオプション( 'sと's )があります。NULlocatefindlocate-0find-print0xargsそれ -0ディスカッション:

find . -type f -name '*doc' -print0 | xargs -0 du -h

locate -0 '*doc' | xargs -0 du -h

おすすめ記事