Mam plik zawierający listę plików, które chciałbym poznać całkowity rozmiar plików. Czy jest na to polecenie?
Mój system operacyjny jest bardzo podstawowym linuksem (Qnap TS-410).
EDYTOWAĆ:
Kilka wierszy z pliku:
/ share / archive / Bailey Test / BD006 / 0.tga
/ share / archive / Bailey / BD007 / 1 wersja 1.tga
/ share / archive / Bailey 2 / BD007 / example.tga
Odpowiedzi:
Myślę, że coś takiego działałoby w busybox:
Nie mam takiego samego środowiska jak ty, ale jeśli napotkasz problemy ze spacjami w nazwach plików, coś takiego też by działało:
Edycja 1 :
@stew ma rację w swoim poście poniżej, du pokazuje użycie dysku, a nie dokładny rozmiar pliku. Aby zmienić zachowanie busybox używa flagi -a, więc spróbuj:
du -a "$file"
dla dokładnego rozmiaru pliku i porównaj dane wyjściowe / zachowanie.źródło
/usr/bin/du: Argument list too long
(prawie 80 000 wierszy w moim pliku). Drugie polecenie po prostu wyświetla mi monit po naciśnięciu klawisza Enter, czekając na coś więcej?cat tgafiles.txt | while read file;do du "$file" done | awk '{i+=$1} END {print i}'
. dzięki Mattiascat tgafiles.txt | while read file;do du "$file";done | awk '{i+=$1} END {print i}'
(tj. przed wykonaniem).-c
dodaje wiersz „całkowity rozmiar”;tail -1
zajmuje ostatnią linię (z całkowitym rozmiarem);cut -f 1
wycina słowo „ogółem”.źródło
Nie wiem, czy twoje narzędzia linux są w stanie to zrobić, ale:
Zrób, xargs ustawi separator jako znak nowej linii, a du wygeneruje dla ciebie wielką sumę.
Patrząc na http://busybox.net/downloads/BusyBox.html wydaje się, że „busybox du” będzie obsługiwał opcję sumy całkowitej, ale „busybox xargs” nie będzie obsługiwał niestandardowych ograniczników.
Ponownie nie jestem pewien twojego zestawu narzędzi.
źródło
xargs: invalid option -- d
-c
opcję, ponieważ xargs wykona wiele wywołań,du
jeśli lista plików jest wystarczająco długa, generując kilkadu
sum.Jest to podobne do rozwiązania Mattiasa Ahnberga. Używanie „odczytu” pozwala ominąć problemy z nazwami plików / katalogów ze spacjami. Używam
stat
zamiast,du
aby uzyskać rozmiar pliku. du otrzymuje ilość miejsca na dysku zamiast wielkości pliku, która może być inna. W zależności od systemu plików 1 bajtowy plik będzie nadal zajmował 4k na dysku (lub jakikolwiek jest rozmiar bloku). Tak więc w przypadku pliku 1-bajtowego stat mówi 1 bajt, a du 4k.źródło
stat
polecenia:stat: command not found
stat: applet not found
w tym przypadkuOto inne rozwiązanie problemu:
źródło
du -bc
działa o wiele szybciej.Wypróbuj coś takiego:
Aby poprawnie radzić sobie ze spacjami na ścieżkach:
źródło
find
?find
zamiast prawdziwego plikufind
binarnego.cat docs.txt | xargs -d \\n du -sk | awk '{total+=$1} END{print total}'
źródło