Jak mogę sprawdzić rozmiar pliku w skrypcie bash?
Jak przypisać to do zmiennej bash, aby móc jej później użyć?
Komentarze
Odpowiedź
Najlepiej, jeśli korzystasz z systemu GNU:
stat --printf="%s" file.any
From man stat :
Łączny rozmiar% s, w bajtach
W skrypcie bash:
#!/bin/bash FILENAME=/home/heiko/dummy/packages.txt FILESIZE=$(stat -c%s "$FILENAME") echo "Size of $FILENAME = $FILESIZE bytes."
UWAGA: patrz
@chbrown „odpowiedź na temat używania statystyki w terminalu w systemie Mac OS X.
Komentarze
- @ haunted85
stat
to najprostszy sposób, zakładając, że ' ponownie używasz Linuksa lub Cygwin (stat
nie jest ' t standardowym).wc -c
jako sugerowane przez Euga é ne jest przenośne. -
stat: illegal option -- c
-
stat --printf="%s" file.txt
nie ' t wypisz cokolwiek na Debianie Jessie … - Na MacOS to działa:
stat -f%z myfile.tar
- @woohoo Twoja zachęta zastępuje wynik.
man stat
mówi, że –printf pomija końcowy znak nowej linii. Użyj--format
lub-c
, aby zobaczyć wynik. Uzyskaj więcej informacji, porównującstat --printf="%s" file.any | xxd -
zstat -c "%s" file.any | xxd -
Odpowiedź
file_size_kb=`du -k "$filename" | cut -f1`
Problem z używaniem stat
polega na tym, że jest to rozszerzenie GNU (Linux). du -k
i cut -f1
są określane przez POSIX i dlatego można je przenosić na każdy system Unix.
Na przykład Solaris jest dostarczany z bash, ale nie z stat
. Nie jest to więc całkowicie hipotetyczne.
ls
ma podobny problem polegający na tym, że nie jest określony dokładny format wyniku, więc nie można przeprowadzić analizy jego wyniku przenośnego . du -h
to także rozszerzenie GNU.
Jeśli to możliwe, trzymaj się przenośnych konstrukcji, a ułatwisz komuś życie w przyszłości. Może swoje.
Komentarze
-
du
nie ' nie daje rozmiar pliku, wskazuje, ile miejsca zajmuje plik, który jest nieco inny (zwykle rozmiar podawany przezdu
to rozmiar pliku zaokrąglony w górę do najbliższej liczba bloków, gdzie blok ma zazwyczaj 512B lub 1kB lub 4kB). - @Gilles, rzadkie pliki (tj. te z dziurami) zgłaszają mniej niż długość.
- To, z
--bytes
lub-b
zamiast-k
, powinno być akceptowaną odpowiedzią. - @fralau: OP chce ” przypisać to do zmiennej bash, aby mogli użyć jej później „, więc jest bardziej prawdopodobne, że chcą aktu al wartość liczbowa, a nie przybliżenie czytelne dla człowieka. Ponadto
-h
jest rozszerzeniem GNU; to nie jest standard - Użycie du z
--apparent-size
flagą zwróci więcej dokładny rozmiar (jak podano dla man:print apparent sizes, rather than disk usage; although the apparent size is usually smaller, it may be larger due to holes in ('sparse') files, internal fragmentation, indirect blocks, and the like
)
Odpowiedź
Możesz także użyć polecenia„ liczba słów ”(wc
):
wc -c "$filename" | awk "{print $1}"
Problem z wc
polega na tym, że „doda nazwę pliku i wciśnie dane wyjściowe. Na przykład:
$ wc -c somefile.txt 1160 somefile.txt
Jeśli chcesz uniknąć łączenia w łańcuch pełnego interpretowanego języka lub edytora strumieniowego tylko po to, aby uzyskać licznik rozmiaru pliku, po prostu przekieruj dane wejściowe z pliku, aby wc
nigdy nie widział nazwy pliku:
wc -c < "$filename"
Tej ostatniej postaci można użyć z podstawianiem poleceń, aby łatwo pobrać szukaną wartość jako zmienną powłoki, o czym wspomina Gilles poniżej.
size="$(wc -c <"$filename")"
Komentarze
-
wc -c <"$FILENAME"
podaje rozmiar bez innego cruft, a zatemsize=$(wc -c <"$FILENAME")
. - Jeszcze tylko jeden punkt: właśnie go przetestowałem i
wc -c < file
wydaje się działać bardzo szybko, przynajmniej w systemie OS X. I ' zgaduję, że wc ma mózg, aby spróbować statować plik, jeśli podano tylko -c. - @EdwardFalk: GNU
wc -c
używafstat
, ale następnie szuka przedostatniego bloku pliku i odczytuje ostatni dost_blksize
bajtów. Najwyraźniej dzieje się tak, ponieważ pliki w Linuksie ' s/proc
i ma tylko przybliżone rozmiary statystyk , awc
chce podawać rzeczywisty rozmiar, a nie rozmiar raportowany przez statystyki. Wydaje mi się, że byłoby dziwnie, gdybywc -c
zgłosił inny rozmiar niżwc
, ale ' nie jest pomysłem odczytywania danych z pliku, jeśli ' jest zwykłym plikiem na dysku, a ' nie ma w pamięci. Lub, co gorsza, pamięć taśmowa near-line … - Wygląda na to, że
printf
nadal widzi wcięcie, np.printf "Size: $size"
– >size: <4 spaces> 54339
. Z drugiej stronyecho
ignoruje spacje. Czy jest jakiś sposób, aby było spójne? - @keithpjolley: dzwoniąc pod numer
fstat
. Spróbuj uruchomićstrace wc -c </etc/passwd
, a zobaczysz, co robi.
Odpowiedz
BSD „s (macOS” s) stat
ma inną flagę argumentu formatu i różne specyfikatory pól. Od man stat(1)
:
-
-f format
: Wyświetl informacje przy użyciu określonego formatu. Zobacz sekcję FORMATY, aby uzyskać opis prawidłowych formatów. - … sekcja FORMATY …
-
z
: rozmiar plik w bajtach.
Więc teraz wszystko razem:
stat -f%z myfile1.txt
UWAGA: patrz @ b01 „s odpowiedź , jak używać polecenia stat
w systemach GNU / Linux. 🙂
Komentarze
- Zauważ, że jest to rozwiązanie tylko dla BSD. Nie ' nie działa z GNU
stat
niestety.
Odpowiedź
Zależy, co rozumiesz przez rozmiar .
size=$(wc -c < "$file")
poda liczbę bajtów, które można odczytać z pliku. IOW, to jest rozmiar zawartości pliku. Jednak odczyta zawartość pliku (z wyjątkiem sytuacji, gdy plik jest zwykłym plikiem lub dowiązaniem symbolicznym do zwykłego pliku w większości implementacji wc
w celu optymalizacji). To może mieć skutki uboczne. Na przykład w przypadku nazwanego potoku to, co zostało przeczytane, nie może być już odczytane ponownie, a w przypadku rzeczy takich jak /dev/zero
lub /dev/random
nieskończony rozmiar, zajmie to trochę czasu. Oznacza to również, że potrzebujesz uprawnień read
do pliku, a ostatnia sygnatura czasowa dostępu do pliku może być zaktualizowany.
To jest standardowe i przenośne, jednak należy zauważyć, że niektóre wc
implementacje mogą zawierać początkowe spacje w tych danych wyjściowych. Jednym ze sposobów na pozbycie się ich jest użycie:
size=$(($(wc -c < "$file")))
lub uniknięcie błędu dotyczącego pustego wyrażenia arytmetycznego w dash
lub yash
, gdy wc
nie daje żadnego wyniku (np. gdy pliku nie można otworzyć):
size=$(($(wc -c < "$file") +0))
ksh93
ma wbudowane wc
(jeśli to włączysz, możesz je również wywołać jako command /opt/ast/bin/wc
), co czyni go najbardziej wydajnym dla zwykłych plików w tej powłoce.
Różne systemy mają polecenie o nazwie stat
to „interfejs do wywołań systemowych stat()
lub lstat()
.
Te informacje raportu znajdują się w i-węzeł. Jedną z tych informacji jest atrybut st_size
. W przypadku zwykłych plików jest to rozmiar zawartości (ile danych można z nich odczytać w przypadku braku błędu (właśnie tego używa większość wc -c
implementacji do optymalizacji) ). W przypadku dowiązań symbolicznych jest to rozmiar ścieżki docelowej w bajtach. W przypadku nazwanych potoków, w zależności od systemu, jest to 0 lub liczba bajtów aktualnie znajdujących się w buforze potoku. To samo dotyczy urządzeń blokowych, gdzie w zależności od systemu otrzymujesz 0 lub rozmiar w bajtach pamięci bazowej.
Nie potrzebujesz uprawnień do odczytu pliku, aby uzyskać te informacje, tylko uprawnienia do wyszukiwania katalog, z którym jest połączony.
W porządku chronologicznym mamy:
-
IRIX
stat
(90 „s):stat -qLs -- "$file"
zwraca atrybut
st_size
$file
(lstat()
) lub:stat -s -- "$file"
to samo z wyjątkiem
$file
jest dowiązaniem symbolicznym, w którym to przypadku jest tost_size
pliku po rozwiązaniu dowiązania symbolicznego. -
zsh
stat
wbudowany (obecnie znany również jakozstat
) w modulezsh/stat
(załadowanym przezzmodload zsh/stat
) (1997):stat -L +size -- $file # st_size of file stat +size -- $file # after symlink resolution
lub do przechowywania w zmiennej:
stat -L -A size +size -- $file
oczywiście jest to najbardziej wydajne w tę powłokę.
-
GNU
stat
(2001); również w BusyBoxstat
od 2 005 (skopiowane z GNUstat
):stat -c %s -- "$file" # st_size of file stat -Lc %s -- "$file" # after symlink resolution
(zwróć uwagę na znaczenie
-L
jest odwrócony w porównaniu z IRIX lubzsh
stat
. -
BSD
stat
(2002):stat -f %z -- "$file" # st_size of file stat -Lf %z -- "$file" # after symlink resolution
Lub możesz użyć funkcji stat()
/ lstat()
jakiegoś języka skryptowego, takiego jak perl
:
perl -le "print((lstat shift)[7])" -- "$file"
AIX ma również istat
polecenie , które zrzuci wszystkie stat()
(nie lstat()
, więc nie będzie działać z linkami symbolicznymi ) informacje, które można przetworzyć w dalszej części, na przykład:
LC_ALL=C istat "$file" | awk "NR == 4 {print $5}"
(dzięki @JeffSchaller za pomoc w ustaleniu szczegółów ).
W tcsh
:
@ size = -Z $file:q
(rozmiar po rozwiązaniu dowiązania symbolicznego)
Na długo przed wprowadzeniem przez GNU polecenia stat
, to samo można osiągnąć za pomocą GNU find
polecenie z predykatem -printf
(już w 1991 r.):
find -- "$file" -prune -printf "%s\n" # st_size of file find -L -- "$file" -prune -printf "%s\n" # after symlink resolution
Problem polega jednak na tym, że nie „t działa, jeśli $file
zaczyna się od -
lub jest predykatem find
(np. !
, (
…).
Standardowe polecenie do pobrania stat()
/ lstat()
to ls
.
Podobnie, możesz:
LC_ALL=C ls -dn -- "$file" | awk "{print $5; exit}"
i dodaj -L
dla tego samego po rozwiązaniu dowiązania symbolicznego. Nie działa to jednak w przypadku plików urządzeń, gdzie 5 th pole to numer główny urządzenia zamiast jego rozmiaru.
W przypadku urządzeń blokowych systemy, w których stat()
zwraca 0 dla st_size
, zwykle mają inne interfejsy API do raportowania rozmiaru urządzenia blokowego. Na przykład Linux ma BLKGETSIZE64
ioctl()
, a większość dystrybucji Linuksa jest teraz dostarczanych z poleceniem blockdev
, które może z niego skorzystać:
blockdev --getsize64 -- "$device_file"
Jednak do tego potrzebne są uprawnienia do odczytu pliku urządzenia. Zwykle można określić rozmiar w inny sposób. Na przykład (nadal w Linuksie):
lsblk -bdno size -- "$device_file"
Powinien działać z wyjątkiem pustych urządzeń.
Podejście, które działa dla wszystkich seekable files (obejmuje to zwykłe pliki, większość urządzeń blokowych i niektóre urządzenia znakowe) polega na otwarciu pliku i szukaniu do końca:
-
Z
zsh
(po załadowaniu modułuzsh/system
):{sysseek -w end 0 && size=$((systell(0)))} < $file
-
Z
ksh93
:< "$file" <#((size=EOF))
lub
{ size=$(<#((EOF))); } < "$file"
-
with
perl
:perl -le "seek STDIN, 0, 2 or die "seek: $!"; print tell STDIN" < "$file"
W przypadku potoków nazwanych widzieliśmy, że niektóre systemy (przynajmniej AIX, Solaris, HP / UX) udostępniają ilość danych w buforze potoku w stat()
„s st_size
. Niektóre (jak Linux czy FreeBSD) nie „t.
Przynajmniej w Linuksie możesz użyć FIONREAD
ioctl()
po otwarciu potoku (w trybie odczytu + zapisu, aby uniknąć jego zawieszenia):
fuser -s -- "$fifo_file" && perl -le "require "sys/ioctl.ph"; ioctl(STDIN, &FIONREAD, $n) or die$!; print unpack "L", $n" <> "$fifo_file"
Pamiętaj jednak, że chociaż nie „t czyta zawartość potoku, samo otwarcie potoku nazwanego w tym miejscu nadal może mieć skutki uboczne. Używamy fuser
, aby najpierw sprawdzić, czy jakiś proces ma już otwarty potok, aby to złagodzić, ale nie jest to niezawodne, ponieważ fuser
nie móc sprawdzić wszystkich procesów.
Do tej pory rozważaliśmy tylko rozmiar podstawowych danych powiązanych z plikami.To nie bierze pod uwagę rozmiaru metadanych i całej infrastruktury pomocniczej potrzebnej do przechowywania tego pliku.
Inny atrybut i-węzła zwrócony przez stat()
to st_blocks
. To liczba 512-bajtowych bloków używanych do przechowywania danych pliku (a czasem niektórych jego metadanych, takich jak rozszerzone atrybuty w systemach plików ext4 w systemie Linux). „nie dołączaj samego i-węzła lub wpisów w katalogach, do których jest dowiązany plik.
Rozmiar i wykorzystanie dysku niekoniecznie są ściśle powiązane, jak kompresja, rzadkość (czasami niektóre metadane), dodatkowa infrastruktura, taka jak bloki pośrednie w niektórych systemach plików ma wpływ na to drugie.
Zazwyczaj du
używa do raportowania użycia dysku. Większość wymienionych powyżej poleceń będzie w stanie uzyskać te informacje.
-
POSIXLY_CORRECT=1 ls -sd -- "$file" | awk "{print $1; exit}"
-
POSIXLY_CORRECT=1 du -s -- "$file"
(nie dotyczy katalogów gdzie obejmowałoby to użycie dysku e znajdujących się w nim plików). - GNU
find -- "$file" -printf "%b\n"
-
zstat -L +block -- $file
- GNU
stat -c %b -- "$file"
- BSD
stat -f %b -- "$file"
-
perl -le "print((lstat shift)[12])" -- "$file"
Komentarze
- zdecydowanie najbardziej wyczerpująca i pouczająca odpowiedź. Dziękuję Ci. mogę użyć tego do tworzenia wieloplatformowych skryptów bash przy użyciu statystyk BSD i GNU
- Ciekawostka: GNU coreutils
wc -c
używafstat
, ale odczytuje ostatnie maksymalniest_blksize
bajtów. Najwyraźniej dzieje się tak, ponieważ pliki w Linuksie ' s/proc
i mają tylko przybliżone rozmiary statystyk . Jest to dobre dla poprawności, ale złe, jeśli koniec pliku znajduje się na dysku, a nie w pamięci (zwłaszcza jeśli jest używany na wielu plikach w pętli). I bardzo źle, jeśli plik jest migrowany do bliskiej linii pamięci taśmowej , lub np. system plików FUSE z przezroczystą dekompresją. - to też nie zadziała
ls -go file | awk '{print $3}'
- @StevenPenny te
-go
byłyby tymi SysV, nie działałyby ' na BSD (opcjonalne (XSI) w POSIX). ' Potrzebujesz równieżls -god file | awk '{print $3; exit}'
(-d
, aby działał na katalogach,exit
dla dowiązań symbolicznych z nowymi liniami w miejscu docelowym). Pozostają również problemy z plikami urządzeń. - @ αғsнιη Unix API nie rozróżnia plików tekstowych i binarnych. To ' to wszystkie sekwencje bajtów. Niektóre aplikacje mogą chcieć interpretować te bajty jako tekst, ale oczywiście nie
wc -c
, które podaje liczbę bajtów.
Odpowiedź
Ten skrypt łączy wiele sposobów obliczania rozmiaru pliku:
( du --apparent-size --block-size=1 "$file" 2>/dev/null || gdu --apparent-size --block-size=1 "$file" 2>/dev/null || find "$file" -printf "%s" 2>/dev/null || gfind "$file" -printf "%s" 2>/dev/null || stat --printf="%s" "$file" 2>/dev/null || stat -f%z "$file" 2>/dev/null || wc -c <"$file" 2>/dev/null ) | awk "{print $1}"
Skrypt działa na wielu systemach uniksowych w tym Linux, BSD, OSX, Solaris, SunOS, itp.
Rozmiar pliku pokazuje liczbę bajtów. Jest to pozorny rozmiar, czyli liczba bajtów używanych przez plik na typowym dysku, bez specjalnej kompresji, specjalnych rzadkich obszarów, nieprzydzielonych bloków itp.
Ten skrypt ma wersję produkcyjną z większą pomocą i więcej opcji tutaj: https://github.com/SixArm/file-size
Odpowiedź
stat wydaje się robić to z najmniejszą liczbą wywołań systemowych:
$ set debian-live-8.2.0-amd64-xfce-desktop.iso $ strace stat --format %s $1 | wc 282 2795 27364 $ strace wc --bytes $1 | wc 307 3063 29091 $ strace du --bytes $1 | wc 437 4376 41955 $ strace find $1 -printf %s | wc 604 6061 64793
Odpowiedź
ls -l filename
poda wiele informacji o pliku, w tym o jego rozmiarze, uprawnieniach i właścicielu.
Rozmiar pliku w piątej kolumnie i jest wyświetlany w bajtach. W poniższym przykładzie rozmiar pliku jest nieco poniżej 2 KB:
-rw-r--r-- 1 user owner 1985 2011-07-12 16:48 index.php
Edytuj: Najwyraźniej nie jest to tak wiarygodne jak polecenie stat
.
Komentarze
- Myślę, że zarówno polecenie
ls -l
, jak istat
podają wiarygodne informacje o rozmiarze. Nie znalazłem żadnego przeciwnego odniesienia.ls -s
poda rozmiar w liczbie bloków. - @ dabest1 to ' nie jest wiarygodne w tym sensie, że inny unix, ich wyjście może być inne (aw niektórych unixach tak jest).
- Tak, IIRC, Solaris nie ' domyślnie wyświetlał nazwę grupy, co prowadzi do mniejszej liczby kolumn w wyniku.
- Ponieważ rozmiar jest czysto liczbowy, otoczony białymi znakami, a data rok jest czysto numeryczna, w zdefiniowanym formacie byłoby możliwe użycie wyrażenia regularnego do traktowania użytkownika + właściciel jako jedno pole, niezależnie od tego, czy grupa była obecna, czy nie. (ćwiczenie dla czytelnika!)
Odpowiedź
du filename
powie Ci użycie dysku w bajtach.
Wolę du -h filename
, który podaje rozmiar w formacie czytelnym dla człowieka.
Komentarze
- that or
stat -c "%s"
😉 - Ten wariant
du
wyświetla rozmiar w blokach 1024 bajty, a nie prosta liczba bajtów. - Zwróć uwagę, że standardowe
du
dają wynik w liczbie 512-bajtowych jednostek. GNUdu
zamiast tego używa kibibajtów, chyba że zostanie wywołane zPOSIXLY_CORRECT
w swoim środowisku. - Dla plików typu katalog , który podaje użycie katalogu, ale także wszystkich innych plików w nim zawartych (rekurencyjnie).
Odpowiedz
Utwórz małe funkcje narzędziowe w skryptach powłoki, którym możesz delegować.
Przykład
#! /bin/sh - # vim: set ft=sh # size utility that works on GNU and BSD systems size(){ case $(uname) in (Darwin | *BSD*) stat -Lf %z -- "$1";; (*) stat -c %s -- "$1" esac } for f do printf "%s\n" "$f : $(gzip < "$f" | wc -c) bytes (versus $(size "$f") bytes)" done
Na podstawie informacji uzyskanych z odpowiedzi @ Stéphane Chazelas „.
Komentarze
- Zobacz także
gzip -v < file > /dev/null
, aby sprawdzić, czy plik jest kompresowalny. - @St é phaneChazelas nie jest pewien, czy uważam, że to poprawa. Te opisy przypadków mogą z łatwością zniechęcić noobsów; z pewnością nigdy nie pamiętam, jak je naprawić 🙂 są z natury bardziej przenośne, ponieważ ty czy to się stało? Widzę sens, kiedy jest więcej niż dwa przypadki, ale poza tym … +
- Przypuszczam, że ' to także kwestia gustu, ale tutaj ' jest typowym przypadkiem, w którym ' chcesz użyć
case
instrukcja.case
to konstrukcja Bourne / POSIX do dopasowywania wzorców.[[...]]
to tylko ksh / bash / zsh (z wariacjami).
Odpowiedź
Znalazłem liner AWK 1 i miał błąd, ale naprawiłem go. Dodałem również w PetaBytes po TeraBytes.
FILE_SIZE=234234 # FILESIZE IN BYTES FILE_SIZE=$(echo "${FILE_SIZE}" | awk "{ split( "B KB MB GB TB PB" , v ); s=1; while( $1>1024 ){ $1/=1024; s++ } printf "%.2f %s", $1, v[s] }")
Biorąc pod uwagę stat nie występuje w każdym systemie, prawie zawsze możesz użyć rozwiązania AWK. Przykład; Raspberry Pi nie ma stat , ale ma awk .
Komentarze
- Zupełnie NIE to, o co prosił OP, ale niezła robota.
Odpowiedź
Sama podoba mi się opcja wc. W połączeniu z „bc” możesz uzyskać ułamki dziesiętne do dowolnej liczby miejsc.
Chciałem ulepszyć skrypt, który kazałem temu awkowi usunąć kolumnę „rozmiaru pliku” z kolumny „ls – alh „. Nie chciałem tylko całkowitych rozmiarów plików, a dwa miejsca po przecinku wydawały się pasować, więc po przeczytaniu tej dyskusji wymyśliłem poniższy kod.
Proponuję przełamać linię średnikami, jeśli umieścisz to w skrypcie.
file=$1; string=$(wc -c $file); bite=${string% *}; okay=$(echo "scale=2; $bite/1024" | bc);friend=$(echo -e "$file $okay" "kb"); echo -e "$friend"
Mój skrypt nazywa się gpfl , co oznacza „pobierz długość pliku obrazu”. Używam go po wykonaniu mogrify na pliku w imagemagick, przed otwarciem lub ponownym załadowaniem obrazu w przeglądarce jpeg z GUI.
Nie wiem, jak to ocenia „odpowiedź”, ponieważ wiele zapożycza z tego, co zostało już zaoferowane i omówione. Więc zostawię to tam.
BZT
Komentarze
- Wolałbym używać ” stat ” lub ” ls „. Zazwyczaj ' nie lubię używać ” wc „, aby uzyskać rozmiary plików, ponieważ fizycznie odczytuje cały plik. Jeśli masz dużo plików lub szczególnie duże pliki, może to zająć dużo czasu. Ale Twoje rozwiązanie jest kreatywne … + 1.
- Zgadzam się z pojęciem korzystania z ” stat ” ponad ” wc ” dla rozmiaru pliku, jednak jeśli użyjesz ” wc -c „, żadne dane nie zostaną odczytane; zamiast tego zostanie użyty lseek oblicz liczbę bajtów w pliku. lingrok.org/xref/coreutils/src/wc.c#228
- @ bbaja42 : zauważ, że GNU Coreutils czyta ostatni blok pliku, na wypadek gdyby
stat.st_size
było tylko przybliżeniem (jak dla Linuksa/proc
i/sys
plików). Wydaje mi się, że postanowili nie komplikować głównego komentarza, gdy dodali tę logikę kilka wierszy w dół: lingrok.org/xref/coreutils/src/wc.c#246
Odpowiedź
Najszybsza i najprostsza (IMO) metoda to:
bash_var=$(stat -c %s /path/to/filename)
Komentarze
- Następnie zagłosuj za jedną lub więcej istniejących odpowiedzi, które wspominają o statystykach; nie ma potrzeby powtarzania tego ponownie …
- @JeffSchaller Właśnie zagłosowałem za Stephane ' na twoje instrukcje.Myślę, że jest to zbyt skomplikowane dla moich celów. Dlatego właśnie opublikowałem tę prostą odpowiedź dla podobnie myślących dusz.
- Dziękuję; to ' to po prostu szóste wystąpienie ” stat ” odpowiedź nie ' nie upraszcza tego Q & A, ale wolałby, aby nowy czytelnik zadawał sobie pytanie ” czym ta odpowiedź różni się od innych? ” i prowadzi do większego zamieszania zamiast mniejszego.
- Wydaje mi się, że @JeffSchaller. Mogę jednak narzekać na wiele
du
iwc
odpowiedzi, które powinny zawierać zastrzeżenie NIGDY TEGO NIE ROBIĆ życie. Właśnie użyłem mojej odpowiedzi w prawdziwej aplikacji dziś wieczorem i pomyślałem, że warto się nią podzielić. Chyba wszyscy mamy swoje zdanie wzrusza ramionami .
pv
icat
dla polecenia kopiowania, które pokazuje postęp i szacowany czas przybycia 🙂-s
, więc możesz po prostu sprawdzić, czy plik ma niezerową długość za pomocąif [ -s file ]; then echo "file has nonzero size" ; fi