Ich messe die Gesamtgröße einer Reihe von Dateien, deren Pfade ich in einem Textdokument, files.txt, gespeichert habe. Beispielinhalt von files.txt:
file1.txt
file2.txt
file3.txt
Dieser Shell-Befehl gibt mir die Ausgabe, die ich möchte:
$ du -hc $(cat files.txt)
es sei denn, ich habe einen Dateinamen mit Leerzeichen, zB: file 9.txt
Dann wird du -hc
versucht, den Dateinamen an dem Leerzeichen zu analysieren. Egal, wo ich in der Datei files.txt oder in meinem Shell-Befehl Anführungszeichen zu setzen scheine, es wird immer noch falsch analysiert. Was soll ich stattdessen tun?
Zu Ihrer Information, mein Dateilistendokument wird folgendermaßen ausgegeben:
find ~/Dropbox/ -type f -iname "*.BMP" >> bmpfound.txt
Meine Systemdetails: MacOS, mit oh-my-zsh in Terminal.app
du
arg nimmt, --files0-from
dann verwenden Sie das und ändern Sie Ihren Fund, um hinzuzufügen -print0
.
xargs
, versuchen Sie es ,cat files.txt|xargs -I{} du -hc "{}"
aber dies wird wahrscheinlich mit Dateinamen mit scheitern"
. Sicherer ist es vielleicht, es in einer Schleife zu machenwhile read line;do du -hc "$line";done <files.txt