Cum pot obține dimensiunea unui fișier într-un script bash?
Cum pot atribui acest lucru unei variabile bash, astfel încât să o pot folosi mai târziu?
Comentarii
Răspuns
Cel mai bun pariu pe un sistem GNU:
stat --printf="%s" file.any
De la man stat :
% s dimensiune totală, în octeți
Într-un script bash:
#!/bin/bash FILENAME=/home/heiko/dummy/packages.txt FILESIZE=$(stat -c%s "$FILENAME") echo "Size of $FILENAME = $FILESIZE bytes."
NOTĂ: vezi
Răspunsul @chbrown pentru modul de utilizare stat în terminal pe Mac OS X.
Comentarii
- @ haunted85
stat
este cea mai simplă cale, presupunând că ‘ folosiți Linux sau Cygwin (stat
isn ‘ t standard).wc -c
ca sugerat de Eug é ne este portabil. -
stat: illegal option -- c
-
stat --printf="%s" file.txt
nu ‘ t scoateți orice pe Debian Jessie … - Pe MacOS funcționează:
stat -f%z myfile.tar
- @woohoo Solicitarea dvs. suprascrie rezultatul.
man stat
spune că –printf omite linia nouă finală. Utilizați--format
sau-c
pentru a vedea rezultatul. Obțineți mai multe informații comparândstat --printf="%s" file.any | xxd -
custat -c "%s" file.any | xxd -
Răspuns
file_size_kb=`du -k "$filename" | cut -f1`
Problema utilizării stat
este că este o extensie GNU (Linux). du -k
și cut -f1
sunt specificate de POSIX și, prin urmare, sunt portabile pentru orice sistem Unix.
Solaris, de exemplu, este livrat cu bash, dar nu cu stat
. Deci, acest lucru nu este în întregime ipotetic.
ls
are o problemă similară prin aceea că formatul exact al ieșirii nu este specificat, astfel încât analiza ieșirii sale nu poate fi realizată portabil . du -h
este, de asemenea, o extensie GNU.
Respectați construcțiile portabile acolo unde este posibil și veți face viața cuiva mai ușoară în viitor. Poate a voastră.
Comentarii
-
du
nu ‘ nu dă dimensiunea fișierului, oferă o indicație a spațiului pe care îl folosește fișierul, care este subtil diferit (de obicei, dimensiunea raportată dedu
este dimensiunea fișierului rotunjită la cel mai apropiat numărul de blocuri, în care un bloc este de obicei 512B sau 1kB sau 4kB). - @Gilles, fișierele rare (adică cele cu găuri în ele) raportează mai puțin decât lungimea.
- Acesta, cu
--bytes
sau-b
în loc de-k
, ar trebui să fie răspunsul acceptat. - @fralau: OP dorește să ” atribuie aceasta unei variabile bash, astfel încât să o poată utiliza mai târziu „, deci este mult mai probabil să își dorească un act o valoare numerică, nu o aproximare lizibilă de om. De asemenea,
-h
este o extensie GNU; nu este standard - Utilizarea du cu
--apparent-size
semnalizator va reveni dimensiune precisă (așa cum se menționează pe om: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
)
Răspuns
De asemenea, puteți utiliza comanda” numărare cuvinte „(wc
):
wc -c "$filename" | awk "{print $1}"
Problema cu wc
este că „va adăuga numele fișierului și va indenta rezultatul. De exemplu:
$ wc -c somefile.txt 1160 somefile.txt
Dacă doriți să evitați înlănțuirea unui limbaj interpretat complet sau a unui editor de flux doar pentru a obține un număr de dimensiuni ale fișierului, trebuie doar să redirecționați intrarea din fișier astfel încât wc
să nu vadă niciodată numele fișierului:
wc -c < "$filename"
Acest ultim formular poate fi utilizat cu înlocuirea comenzii pentru a obține cu ușurință valoarea pe care o căutați ca variabilă shell, așa cum este menționat de Gilles mai jos.
size="$(wc -c <"$filename")"
Comentarii
-
wc -c <"$FILENAME"
oferă dimensiunea fără altă cruft, astfelsize=$(wc -c <"$FILENAME")
. - Încă un punct: tocmai l-am testat și
wc -c < file
pare a fi foarte rapid, cel puțin pe OS X. I ‘ presupun că wc are creierul pentru a încerca să calculeze fișierul dacă este specificat numai -c. - @EdwardFalk: GNU
wc -c
foloseștefstat
, dar apoi caută ultimul bloc al fișierului și citește ultimiist_blksize
octeți. Se pare că acest lucru se datorează faptului că fișierele din Linux ‘ s/proc
și/sys
, de exemplu, au dimensiuni statistice care sunt doar aproximative șiwc
dorește să raporteze dimensiunea reală, nu dimensiunea raportată statistică. Cred că ar fi ciudat cawc -c
să raporteze o dimensiune diferită dewc
, dar ‘ nu are idee să citească date din fișier dacă ‘ este un fișier de disc normal și ‘ nu este în memorie. Sau, mai rău, stocarea de bandă aproape de linie … - Se pare că
printf
vede încă indentarea, de ex.printf "Size: $size"
– >size: <4 spaces> 54339
. Pe de altă parte,echo
ignoră spațiul alb. Aveți vreo modalitate de a-l face coerent? - @keithpjolley: apelând
fstat
. Încercați să rulațistrace wc -c </etc/passwd
și puteți vedea ce face.
Răspuns
BSD „s (macOS” s) stat
are un semnal de argument de format diferit și specificatori de câmp diferiți. Din man stat(1)
:
-
-f format
: afișați informații utilizând formatul specificat. Consultați secțiunea FORMATE pentru o descriere a formatelor valide. - … secțiunea FORMATE …
-
z
: dimensiunea fișier în octeți.
Deci, toate împreună acum:
stat -f%z myfile1.txt
NOTĂ: consultați @ b01 „răspuns pentru modul de utilizare a comenzii stat
pe sistemele GNU / Linux. 🙂
Comentarii
- Rețineți că aceasta este o soluție exclusiv BSD. Nu funcționează ‘ cu GNU
stat
, din păcate.
Răspuns
Depinde ce vrei să spui prin mărime .
size=$(wc -c < "$file")
vă va oferi numărul de octeți care pot fi citiți din fișier. IOW, este dimensiunea conținutului fișierului. Cu toate acestea, va citi conținutul fișierului (cu excepția cazului în care fișierul este un fișier obișnuit sau un link simbolic către fișierul obișnuit în majoritatea implementărilor wc
ca optimizare). Acest lucru poate avea efecte secundare. De exemplu, pentru o țeavă numită, ceea ce a fost citit nu mai poate fi citit din nou și pentru lucruri precum /dev/zero
sau /dev/random
care sunt de dimensiune infinită, va dura ceva timp. Asta înseamnă, de asemenea, că aveți nevoie de read
permisiune pentru fișier, iar ultimul timestamp de acces al fișierului poate să fie actualizat.
Acest lucru este standard și portabil, cu toate acestea, rețineți că unele wc
implementări pot include spații libere în acea ieșire. O modalitate de a scăpa de ele este de a utiliza:
size=$(($(wc -c < "$file")))
sau de a evita o eroare despre o expresie aritmetică goală în dash
sau yash
când wc
nu produce nicio ieșire (ca atunci când fișierul nu poate fi deschis):
size=$(($(wc -c < "$file") +0))
ksh93
a încorporat wc
(cu condiția să îl activați, îl puteți invoca și ca command /opt/ast/bin/wc
) ceea ce îl face cel mai eficient pentru fișierele obișnuite din acel shell.
Diverse sisteme au o comandă numită stat
care este o interfață cu apelurile de sistem stat()
sau lstat()
.
Aceste informații de raport găsite în inod. Una dintre aceste informații este atributul st_size
. Pentru fișierele obișnuite, aceasta este dimensiunea conținutului (cât de multe date ar putea fi citite din acesta în absența unei erori (asta este ceea ce utilizează majoritatea implementărilor wc -c
în optimizarea lor) ). Pentru legăturile simbolice, aceasta este dimensiunea în octeți a căii țintă. Pentru țevile denumite, în funcție de sistem, este fie 0, fie numărul de octeți în prezent în tamponul de țevi. Același lucru este valabil pentru dispozitivele de blocare în care, în funcție de sistem, obțineți 0 sau dimensiunea în octeți a spațiului de stocare subiacent.
Nu aveți nevoie de permisiunea de citire a fișierului pentru a obține aceste informații, doar căutați permisiunea către director la care este legat.
După ordinea cronologică, există:
-
IRIX
stat
(90 „s):stat -qLs -- "$file"
returnează atributul
st_size
al$file
(lstat()
) sau:stat -s -- "$file"
același, cu excepția cazului în
$file
este un link simbolic, caz în care estest_size
al fișierului după rezoluția linkului simbol. -
zsh
stat
builtin (cunoscut și sub numele dezstat
) în modululzsh/stat
(încărcat cuzmodload zsh/stat
) (1997):stat -L +size -- $file # st_size of file stat +size -- $file # after symlink resolution
sau pentru a stoca într-o variabilă:
stat -L -A size +size -- $file
evident, acesta este cel mai eficient în acel coajă.
-
GNU
stat
(2001); de asemenea, în BusyBoxstat
din 2 005 (copiat din GNUstat
):stat -c %s -- "$file" # st_size of file stat -Lc %s -- "$file" # after symlink resolution
(rețineți semnificația
-L
este inversat comparativ cu IRIX sauzsh
stat
. -
BSD-uri
stat
(2002):stat -f %z -- "$file" # st_size of file stat -Lf %z -- "$file" # after symlink resolution
Sau puteți utiliza funcția stat()
/ lstat()
a unui anumit limbaj de scriptare, cum ar fi perl
:
perl -le "print((lstat shift)[7])" -- "$file"
AIX are și un istat
comanda care va arunca toate stat()
(nu lstat()
, deci nu va funcționa pe linkurile simbolice ) informații și cu care ați putea prelucra, de exemplu:
LC_ALL=C istat "$file" | awk "NR == 4 {print $5}"
(mulțumesc @JeffSchaller pentru ajuta la găsirea detaliilor ).
În tcsh
:
@ size = -Z $file:q
(dimensiune după rezoluția link-ului simbolic)
Cu mult înainte ca GNU să introducă comanda stat
, același lucru s-ar putea realiza cu GNU find
comanda cu -printf
predicat (deja în 1991):
find -- "$file" -prune -printf "%s\n" # st_size of file find -L -- "$file" -prune -printf "%s\n" # after symlink resolution
O problemă este că nu funcționează dacă $file
începe cu -
sau este un predicat find
(cum ar fi !
, (
…).
Comanda standard pentru a obține stat()
/ lstat()
informațiile sunt ls
.
POSIX, puteți face:
LC_ALL=C ls -dn -- "$file" | awk "{print $5; exit}"
și adăugați -L
pentru același lucru după rezoluția link-ului simbolic. Asta nu funcționează pentru fișierele dispozitivului, deși câmpul 5 th este numărul principal al dispozitivului în loc de dimensiune.
Pentru dispozitivele bloc, sistemele în care stat()
returnează 0 pentru st_size
, de obicei au alte API-uri pentru a raporta dimensiunea dispozitivului bloc. De exemplu, Linux are BLKGETSIZE64
ioctl()
, iar majoritatea distribuțiilor Linux sunt livrate acum cu o comandă blockdev
care o poate folosi:
blockdev --getsize64 -- "$device_file"
Cu toate acestea, aveți nevoie de permisiunea de citire a fișierului dispozitivului pentru aceasta. De obicei, este posibil să obțineți dimensiunea prin alte mijloace. De exemplu (încă pe Linux):
lsblk -bdno size -- "$device_file"
Ar trebui să funcționeze cu excepția dispozitivelor goale.
O abordare care funcționează pentru toți căutare fișiere (deci include fișiere obișnuite, majoritatea dispozitivelor de blocare și unele dispozitive cu caractere) este să deschideți fișierul și să căutați până la capăt:
-
Cu
zsh
(după încărcarea modululuizsh/system
):{sysseek -w end 0 && size=$((systell(0)))} < $file
-
Cu
ksh93
:< "$file" <#((size=EOF))
sau
{ size=$(<#((EOF))); } < "$file"
-
cu
perl
:perl -le "seek STDIN, 0, 2 or die "seek: $!"; print tell STDIN" < "$file"
Pentru țevile denumite, „am văzut că unele sisteme (cel puțin AIX, Solaris, HP / UX) fac cantitatea de date din buffer-ul de țevi disponibil în stat()
” s st_size
. Unele (cum ar fi Linux sau FreeBSD) nu „
Cel puțin pe Linux, puteți utiliza FIONREAD
ioctl()
după ce ați deschis conducta (în modul citire + scriere pentru a evita agățarea):
fuser -s -- "$fifo_file" && perl -le "require "sys/ioctl.ph"; ioctl(STDIN, &FIONREAD, $n) or die$!; print unpack "L", $n" <> "$fifo_file"
Cu toate acestea, rețineți că în timp ce nu „t citește conținutul țevii, simpla deschidere a țevii numite aici poate avea în continuare efecte secundare. „Folosim fuser
pentru a verifica mai întâi dacă un proces are deja conducta deschisă pentru a atenua acest lucru, dar că„ nu este infailibil, deoarece fuser
nu putem verifica toate procesele.
Acum, am luat în considerare doar dimensiunea datelor primare asociate fișierelor.Acest lucru nu ține cont de dimensiunea metadatelor și de toată infrastructura de suport necesară pentru stocarea fișierului respectiv.
Un alt atribut inode returnat de stat()
este st_blocks
. Acesta este numărul de blocuri de 512 octeți care este utilizat pentru a stoca datele fișierului (și, uneori, unele dintre metadatele sale, cum ar fi atributele extinse pe sistemele de fișiere ext4 pe Linux). „nu include inodul în sine sau intrările din directoarele la care este legat fișierul.
Dimensiunea și utilizarea discului nu sunt neapărat strâns legate de compresie, raritate (uneori unele metadate), infrastructură suplimentară precum blocuri indirecte în unele sisteme de fișiere au o influență asupra acestuia din urmă.
Asta este ceea ce du
folosește pentru a raporta utilizarea discului. Majoritatea comenzilor enumerate mai sus vor putea să obțineți aceste informații.
-
POSIXLY_CORRECT=1 ls -sd -- "$file" | awk "{print $1; exit}"
-
POSIXLY_CORRECT=1 du -s -- "$file"
(nu pentru directoare unde ar include discul usag e din fișierele din cadrul). - 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"
Comentarii
- în mod clar cel mai cuprinzător și mai informațional răspuns. mulțumesc. Pot folosi acest lucru pentru a crea scripturi bash pe mai multe platforme folosind informațiile despre statistici BSD și GNU
- Fapt distractiv: GNU coreutils
wc -c
utilizeazăfstat
, dar apoi citește ultimii octețist_blksize
. Se pare că acest lucru se datorează faptului că fișierele din Linux ‘ s/proc
și/sys
, de exemplu, au dimensiuni statistice care sunt doar aproximative . Acest lucru este bun pentru corectitudine, dar rău dacă sfârșitul fișierului este pe disc și nu în memorie (în special dacă este utilizat pe multe fișiere într-o buclă). Și foarte rău dacă fișierul este migrat la stocare pe bandă aproape de linie , sau de ex. un sistem de fișiere cu descompunere transparentă FUSE. - nu ar funcționa și asta
ls -go file | awk '{print $3}'
- @StevenPenny cei
-go
ar fi cele SysV, nu ar funcționa ‘ pe BSD-uri (opțional (XSI) în POSIX). ‘ aveți nevoie și dels -god file | awk '{print $3; exit}'
(-d
pentru ca acesta să funcționeze pe directoare,exit
pentru link-uri simbolice cu linii noi în țintă). Problemele cu fișierele dispozitivului rămân și ele. - @ αғsнιη API-ul Unix nu face distincție între fișierele text și cele binare. Este ‘ toate secvențele de octeți. Unele aplicații ar putea dori să interpreteze acești octeți ca text, dar, evident, nu
wc -c
care raportează numărul de octeți.
Răspuns
Acest script combină mai multe moduri de a calcula dimensiunea fișierului:
( 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}"
Scriptul funcționează pe multe sisteme Unix inclusiv Linux, BSD, OSX, Solaris, SunOS etc.
Dimensiunea fișierului arată numărul de octeți. Este dimensiunea aparentă, care este octeții pe care fișierul îi folosește pe un disc tipic, fără compresie specială, sau zone speciale rare, sau blocuri nealocate etc. mai multe opțiuni aici: https://github.com/SixArm/file-size
Răspuns
stat pare să facă acest lucru cu cele mai puține apeluri de sistem:
$ 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
Răspuns
ls -l filename
vă va oferi o mulțime de informații despre un fișier, inclusiv dimensiunea acestuia, permisiunile și proprietarul.
Dimensiunea fișierului în a cincea coloană și este afișată în octeți. În exemplul de mai jos, dimensiunea fișierului este puțin sub 2 KB:
-rw-r--r-- 1 user owner 1985 2011-07-12 16:48 index.php
Editați: Acest lucru se pare că nu este la fel de fiabil ca comanda stat
.
Comentarii
- Cred că ambele comenzi
ls -l
șistat
oferă informații fiabile despre dimensiune. Nu am găsit nicio referire la contrar.ls -s
va da dimensiunea în număr de blocuri. - @ dabest1 ‘ nu este de încredere într-un sens că în un alt unix, ieșirea lor poate fi diferită (și în unele unixuri este).
- Da, IIRC, Solaris nu a afișat implicit numele grupului, care duce la mai puține coloane în ieșire.
- Deoarece dimensiunea este numerică pură, înconjurată de spații albe și data anului este numerică pură, într-un format definit, ar fi posibil să se utilizeze o regexp pentru a trata utilizatorul + proprietar ca un câmp, indiferent dacă grupul a fost sau nu prezent. (un exercițiu pentru cititor!)
Răspuns
du filename
vă va spune utilizarea discului în octeți.
Prefer du -h filename
, care vă oferă dimensiunea într-un format lizibil de către om.
Comentarii
- that or
stat -c "%s"
😉 - Această aromă a
du
tipărește dimensiunea în blocuri de 1024 octeți, nu un număr simplu de octeți. - Rețineți că standardul
du
oferă o ieșire în număr de unități de 512 octeți. GNUdu
folosește în schimb kibibytes, cu excepția cazului în care este apelat cuPOSIXLY_CORRECT
în mediul său. - Pentru fișierele de tip director , care oferă utilizarea discului din director, dar și a tuturor celorlalte fișiere din interior (recursiv).
Răspuns
Creați mici funcții de utilitate în scripturile shell pe care le puteți delega.
Example
#! /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
Pe baza informațiilor de la răspunsul lui @ Stéphane Chazelas „.
Comentarii
- Consultați și
gzip -v < file > /dev/null
pentru a verifica compresibilitatea unui fișier. - @St é phaneChazelas nu sunt sigur dacă cred că a fost o îmbunătățire. Aceste declarații de caz pot ușor să înlăture noobs; cu siguranță nu-mi amintesc niciodată cum să le fac corect 🙂 sunt declarații de caz inerent mai portabile, deoarece Am văzut punctul în care există mai mult de două cazuri, dar altfel … +
- Presupun că ‘ este și o chestiune de gust, dar aici ‘ este cazul tipic în care ‘ doriți să utilizați un
case
declarație.case
este constructul Bourne / POSIX pentru a face potrivirea modelelor.[[...]]
este doar ksh / bash / zsh (cu variații).
Răspuns
Am găsit o linie AWK 1 și avea o eroare, dar am remediat-o. Am adăugat și în PetaBytes după 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] }")
Luând în considerare stat nu este pe fiecare sistem, puteți folosi aproape întotdeauna soluția AWK. Exemplu; Raspberry Pi nu are stat dar are awk .
Comentarii
- Complet NU ceea ce a cerut OP, ci o mică lucrare drăguță.
Răspuns
Îmi place opțiunea wc. Împreună cu „bc”, puteți obține zecimale în câte locuri doriți.
Încercam să îmbunătățesc un script pe care l-am dezvăluit în coloana „dimensiunea fișierului” din „ls – alh „comanda. Nu voiam doar dimensiuni de fișiere întregi și două zecimale păreau să se potrivească, așa că după ce am citit această discuție, am venit cu codul de mai jos.
Vă sugerez să rupeți linia la punct și virgulă dacă includeți acest lucru într-un script.
file=$1; string=$(wc -c $file); bite=${string% *}; okay=$(echo "scale=2; $bite/1024" | bc);friend=$(echo -e "$file $okay" "kb"); echo -e "$friend"
My scriptul se numește gpfl , pentru „obțineți lungimea fișierului imagine”. Îl folosesc după ce am făcut o mogrify pe un fișier din imagemagick, înainte de a deschide sau reîncărca o imagine într-un vizualizator jpeg GUI.
Nu știu cum este evaluat un „răspuns”, deoarece împrumută mult din ceea ce a fost deja oferit și discutat. Așa că o voi lăsa acolo.
BZT
Comentarii
- Aș prefera să folosesc ” stat ” sau ” ls „. De obicei, nu îmi place ‘ să folosesc ” wc ” pentru a obține dimensiunile fișierelor, deoarece citește fizic întregul fișier. Dacă aveți o mulțime de fișiere sau fișiere deosebit de mari, acest lucru poate dura mult. Dar soluția dvs. este creativă … + 1. de utilizare a ” stat ” peste ” wc ” pentru dimensiunea fișierului, cu toate acestea, dacă utilizați ” wc -c „, nu se vor citi date; în schimb, lseek va fi folosit pentru calculează numărul de octeți dintr-un fișier. lingrok.org/xref/coreutils/src/wc.c#228
- @ bbaja42 : rețineți că GNU Coreutils citește ultimul bloc al fișierului, în cazul în care
stat.st_size
a fost doar o aproximare (ca pentru Linux/proc
și/sys
fișiere). Bănuiesc că au decis să nu facă comentariul principal mai complicat atunci când au adăugat că logica este însoțită de câteva linii: lingrok.org/xref/coreutils/src/wc.c#246
Răspuns
Cea mai rapidă și simplă metodă (IMO) este:
bash_var=$(stat -c %s /path/to/filename)
Comentarii
- Apoi votați unul sau mai multe dintre răspunsurile existente care menționează stat; nu este nevoie să-l repet din nou …
- @JeffSchaller Tocmai am votat răspunsul lui Stephane ‘ la instrucțiunile dvs.Cred că este prea complicat pentru scopurile mele. Acesta este motivul pentru care am postat acest răspuns simplu pentru suflete asemănătoare.
- Mulțumesc; ‘ este doar că o șasea instanță a unei ” stat ” răspunsul nu ‘ simplifică acest Q & A, ci ar prefera să facă un nou cititor să se întrebe ” în ce fel este diferit acest răspuns de celelalte? ” și duce la mai multă confuzie în loc de mai puțin.
- @JeffSchaller, cred. Dar aș putea să mă plâng de numeroasele
du
șiwc
răspunsuri care ar trebui să aibă o responsabilitate NICIODATĂ NU FĂ ACESTA în real viaţă. Tocmai mi-am folosit răspunsul într-o aplicație din viața reală în această seară și am crezut că merită să-l împărtășesc. Cred că toți avem părerile noastre ridică din umeri .
pv
șicat
pentru o comandă de copiere care arată progresul și ETA 🙂-s
, deci puteți testa pur și simplu dacă un fișier are o lungime diferită de zero cuif [ -s file ]; then echo "file has nonzero size" ; fi