私は、テキストドキュメントfiles.txtにパスを保存した一連のファイルの合計サイズを測定しています。 files.txtの内容の例:
file1.txt
file2.txt
file3.txt
このシェルコマンドは、必要な出力を提供します。
$ du -hc $(cat files.txt)
スペースを含むファイル名がない限り、例:file 9.txt
次に、du -hc
スペースでファイル名を解析しようとします。 files.txtまたはShellコマンドのどこに引用符を入れても、正しく解析されません。代わりに何をすべきですか?
参考までに、私のファイルリストドキュメントは次のようなコマンドの出力です。
find ~/Dropbox/ -type f -iname "*.BMP" >> bmpfound.txt
私のシステムの詳細:MacOS、Terminal.appでoh-my-zshを使用
find
の-print0
オプションを活用し、xargs -0
にパイプします。
find ~/Dropbox/ -type f -iname "*.BMP" -print0 | xargs -0 du -ch
あるいは、Gordon Davissonがコメントしたように、これは単純化できます。
find ~/Dropbox/ -type f -iname "*.BMP" -exec du -ch {} +
これらのいずれも、スペースを含むファイル名、または任意の方法の間抜けな文字で機能するはずです。
find
の出力をパイプするのではなく、意図的にファイルにリダイレクトするつもりだったかどうかはわかりませんが、実際にファイルリストを保持したい場合は、代わりに次のようにすることができます。
xargs -0 du -ch < bmpfound.txt