Hogyan kaphatom meg a fájl méretét egy bash szkriptben?
Hogyan rendelhetem ezt hozzá egy bash változóhoz, hogy később felhasználhassam?
Megjegyzések
Válasz
A legjobb fogadás, ha GNU rendszeren van:
stat --printf="%s" file.any
Feladó: man stat :
% s teljes méret, bájtban
Bash szkriptben:
#!/bin/bash FILENAME=/home/heiko/dummy/packages.txt FILESIZE=$(stat -c%s "$FILENAME") echo "Size of $FILENAME = $FILESIZE bytes."
MEGJEGYZÉS: lásd
@chbrown válasza a stat használatához a Mac OS X terminálján.
Megjegyzések
- @ haunted85
stat
a legegyszerűbb módszer, feltételezve, hogy ‘ Linuxot vagy Cygwint használ (stat
nem ‘ t szabvány). Az Eug által javasoltwc -c
mint , amelyet Eug ajánlott é ne hordozható. -
stat: illegal option -- c
-
stat --printf="%s" file.txt
nem ‘ t bármit kiadjon a Debian Jessie-n … - MacOS rendszeren ez működik:
stat -f%z myfile.tar
- @woohoo Az Ön felülírása felülírja a kimenetet. A
man stat
szerint a –printf kihagyja a záró új sort. Használja a--format
vagy a-c
elemet a kimenet megtekintéséhez. További betekintést nyerhet astat --printf="%s" file.any | xxd -
és astat -c "%s" file.any | xxd -
Válasz
összehasonlításával
file_size_kb=`du -k "$filename" | cut -f1`
A stat
használatával az a probléma, hogy ez egy GNU (Linux) kiterjesztés. du -k
és cut -f1
fájlokat a POSIX határozza meg, ezért bármely Unix rendszerbe hordozhatók.
A Solaris például bash-val szállít, de stat
. Tehát ez nem teljesen hipotetikus.
ls
hasonló problémája van, mivel a kimenet pontos formátuma nincs megadva, így a kimenet elemzése nem hajtható végre . A du -h
szintén egy GNU kiterjesztés.
Ha lehetséges, tartsa be a hordozható konstrukciókat, és a jövőben megkönnyíti valakinek az életét. Talán a sajátját.
Megjegyzések
-
du
nem adja meg a ‘ A fájl mérete azt jelzi, hogy mekkora helyet használ a fájl, ami finoman eltér (általában adu
által jelentett méret a fájl mérete a legközelebbi értékre kerekítve blokkok száma, ahol a blokk tipikusan 512B, 1kB vagy 4kB). - @Gilles, a ritka fájlok (azaz olyanok, amelyekben vannak lyukak) kevesebbet jelentenek, mint a hossz.
- Ez a
--bytes
vagy a-b
és-k
helyett az elfogadott válasz legyen. / li> - @fralau: Az OP ” ezt akarja rendelni egy bash változóhoz, hogy később használhassák “, így sokkal valószínűbb, hogy actut akarnak al numerikus érték, nem ember által olvasható közelítés. Ezenkívül a
-h
egy GNU kiterjesztés; ez nem szabvány - A du használata a
--apparent-size
zászlóval többet eredményez pontos méret (ahogy az emberen is megfogalmazta: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
)
Válasz
Használhatja a” word count “parancsot is (wc
):
wc -c "$filename" | awk "{print $1}"
A wc
problémája az, hogy “hozzáadja a fájlnevet és behúzza a kimenetet. Például:
$ wc -c somefile.txt 1160 somefile.txt
Ha szeretné elkerülni a teljes értelmezett nyelv vagy adatfolyam-szerkesztő láncolását, csak a fájlméret számának megszerzése érdekében, egyszerűen irányítsa át a bemenetet a fájlból, hogy wc
soha ne láthassa a fájlnevet:
wc -c < "$filename"
Ez az utolsó űrlap a parancs behelyettesítésével könnyen megragadhatja azt az értéket, amelyet shell változóként keresett, amint azt a Gilles alább.
size="$(wc -c <"$filename")"
Megjegyzések
-
wc -c <"$FILENAME"
megadja a méretet, más kényszer nélkül, ígysize=$(wc -c <"$FILENAME")
. - Csak még egy pont: most teszteltem, és úgy tűnik, hogy a
wc -c < file
nagyon gyors, legalábbis az OS X-en. I ‘ arra tippelek, hogy a wc-nek van agya, hogy megpróbálja statálni a fájlt, ha csak a -c van megadva. - @EdwardFalk: A GNU
wc -c
afstat
, de utána a fájl második utolsó blokkjára törekszik, és felolvassa az utolsó legfeljebbst_blksize
bájtokat. Nyilvánvaló, hogy ez azért van, mert a Linux fájljai ‘ s/proc
és statisztikai mérete csak hozzávetőleges , és awc
a tényleges méretet akarja jelenteni, nem pedig a stat által jelentett méretet. Azt hiszem, furcsa lenne, hawc -c
más méretet jelentene, mint awc
, de ‘ nem célszerű adatokat olvasni a fájlból, ha ‘ egy normál lemezfájl, és ‘ nincs a memóriában. Vagy ami még rosszabb: sorközeli szalagos tárolás … - Úgy tűnik, hogy
printf
még mindig látja a behúzást, pl.printf "Size: $size"
– >size: <4 spaces> 54339
. Másrésztecho
figyelmen kívül hagyja a szóközt. Van valami módja annak, hogy következetes legyen? - @keithpjolley: A
fstat
hívásával. Próbálkozzon astrace wc -c </etc/passwd
futtatásával, és láthatja, hogy mit csinál.
Válasz
BSD “s (macOS” s) stat
más formátumú argumentumjelzővel és más mezőmeghatározókkal rendelkezik. From man stat(1)
:
-
-f format
: Információk megjelenítése a megadott formátumban. Az érvényes formátumok leírását a FORMÁTUMOK részben találja. - … a FORMÁTUMOK szakasz …
-
z
: A fájl bájtokban.
Tehát most együtt:
stat -f%z myfile1.txt
MEGJEGYZÉS: lásd: @ b01 válasza a stat
parancs használatára GNU / Linux rendszereken. 🙂
Megjegyzések
- Ne feledje, hogy ez csak BSD-s megoldás. Nem ‘ nem működik a GNU
stat
, sajnos.
Válasz
Attól függ, mit értesz méret alatt.
size=$(wc -c < "$file")
megadja a fájlból kiolvasható bájtok számát. IOW, akkora, mint a fájl tartalma. Ez azonban elolvassa a fájl tartalmát (kivéve, ha a fájl normál fájl, vagy a legtöbb wc
optimalizálásként a normál fájlhoz kapcsolódik). Ennek lehetnek mellékhatásai. Például egy megnevezett csőnél az elolvasott már nem olvasható újra, és például /dev/zero
vagy /dev/random
végtelen méretű, eltart egy ideig. Ez azt is jelenti, hogy read
engedélyre van szüksége a fájlhoz, és előfordulhat, hogy a fájl utolsó hozzáférési időbélyegzője frissíteni kell.
Ez szabványos és hordozható, azonban vegye figyelembe, hogy egyes wc
megvalósítások tartalmazhatnak vezető üres helyeket a kimenetben. Az egyik módja annak, hogy megszabaduljon tőlük, a következők használata:
size=$(($(wc -c < "$file")))
vagy elkerülhető az dash
vagy yash
amikor a wc
nem hoz kimenetet (például amikor a fájl nem nyitható meg):
size=$(($(wc -c < "$file") +0))
ksh93
wc
be van építve (ha engedélyezi, meghívhatja is) mint command /opt/ast/bin/wc
), ami a leghatékonyabb a rendszeres fájlok számára ebben a héjban.
Különböző rendszerek rendelkeznek stat
ez egy interfész a stat()
vagy a lstat()
rendszerhívásokhoz.
Ezek a jelentési információk a inode. Ezen információk egyike a st_size
attribútum. A szokásos fájlok esetében ekkora a tartalom (mennyi adat olvasható ki belőle hiba hiányában (ezt használja a legtöbb wc -c
megvalósítás az optimalizálás során) ). Szimlinkek esetén ez a cél elérési útjának bájtja. A megnevezett csövek esetében a rendszertől függően vagy 0, vagy a csőpufferben lévő bájtok száma. Ugyanaz a blokkolóeszközök esetében is, ahol a rendszertől függően 0 vagy az alapul szolgáló tároló bájtja lesz.
Az információk megszerzéséhez nem kell olvasási engedély a fájlhoz, csak a könyvtár, amelyhez kapcsolódik.
Időrend szerint:
-
IRIX
stat
(90 “s):stat -qLs -- "$file"
a iv id
st_size
attribútumot adja vissza = “b8ccb6d7c5”>
(lstat()
) vagy:
stat -s -- "$file"
ugyanaz, kivéve, ha $file
egy szimbolikus link, ebben az esetben a fájl st_size
je a szimbolikus felbontás után.
zsh
stat
beépített (ma más néven zstat
) a zsh/stat
modulban (betöltve a zmodload zsh/stat
) (1997):
stat -L +size -- $file # st_size of file stat +size -- $file # after symlink resolution
vagy egy változóban való tároláshoz:
stat -L -A size +size -- $file
nyilvánvalóan ez a leghatékonyabb az a héj.
GNU stat
(2001); 2 óta a BusyBoxban is stat
005 (másolva a GNU stat
címről):
stat -c %s -- "$file" # st_size of file stat -Lc %s -- "$file" # after symlink resolution
(vegye figyelembe a fordított az IRIX-hez vagy a zsh
stat
-hez képest.
BSD-k stat
(2002):
stat -f %z -- "$file" # st_size of file stat -Lf %z -- "$file" # after symlink resolution
Vagy használhatja egyes szkriptnyelvek stat()
/ lstat()
funkcióját, például perl
:
perl -le "print((lstat shift)[7])" -- "$file"
Az AIX-nek van egy istat
parancs , amely az összes stat()
fájlt ki fogja dobni (nem lstat()
, tehát nem fog működni a szimbólum linkeken ) információk, amelyeket utólag feldolgozhat, például:
LC_ALL=C istat "$file" | awk "NR == 4 {print $5}"
(köszönöm @JeffSchaller a segítség a részletek kitalálásában ).
In tcsh
:
@ size = -Z $file:q
(méret a symlink felbontás után)
Már jóval azelőtt, hogy a GNU bevezette volna a stat
parancsot, ugyanezt el lehetett érni a GNU find
parancs a -printf
predikátummal (már 1991-ben):
find -- "$file" -prune -printf "%s\n" # st_size of file find -L -- "$file" -prune -printf "%s\n" # after symlink resolution
Azonban az egyik kérdés, hogy nem “t” akkor működik, ha a $file
-
-vel kezdődik, vagy find
predikátum (például !
, (
…).
A stat()
/ lstat()
információ ls
.
POSIXlyan megteheti:
LC_ALL=C ls -dn -- "$file" | awk "{print $5; exit}"
és adja hozzá ugyanezért a -L
-t a symlink felbontása után. Ez azonban nem működik az eszközfájlok esetében, ahol az 5. th mező az eszköz főszáma a méret helyett.
Blokkolóeszközök esetén azok a rendszerek, ahol 0 értéket ad vissza a st_size
értékre, általában más API-val rendelkezik a blokkoló eszköz méretének jelentésére. Például a Linux rendelkezik az BLKGETSIZE64
ioctl()
, és a legtöbb Linux disztribúció most egy blockdev
paranccsal szállítja, amely kihasználhatja:
blockdev --getsize64 -- "$device_file"
Ehhez azonban olvasási engedélyre van szükséged az eszközfájlhoz. A méretet általában más módon lehet levezetni. Például (még mindig Linux rendszeren):
lsblk -bdno size -- "$device_file"
Az üres eszközök kivételével működnie kell.
Az összes megközelítésnek megfelelő megközelítés kereshető fájlok (így a szokásos fájlok, a legtöbb blokkolóeszköz és néhány karaktereszköz is) a fájl megnyitása és a végére való törekvés:
-
zsh
(azsh/system
modul betöltése után):{sysseek -w end 0 && size=$((systell(0)))} < $file
-
A következővel:
ksh93
:< "$file" <#((size=EOF))
vagy
{ size=$(<#((EOF))); } < "$file"
-
a következővel:
perl
:perl -le "seek STDIN, 0, 2 or die "seek: $!"; print tell STDIN" < "$file"
Megnevezett csövek esetében azt láttuk, hogy egyes rendszerek (legalább AIX, Solaris, HP / UX) a csőv pufferben lévő adatok mennyiségét elérhetővé teszik a stat()
“s alatt st_size
. Egyesek (például a Linux vagy a FreeBSD) nem “t”.
Legalább Linux rendszeren használhatja a FIONREAD
ioctl()
miután kinyitotta a csövet (olvasási + írási módban, hogy elkerülje a lógást):
fuser -s -- "$fifo_file" && perl -le "require "sys/ioctl.ph"; ioctl(STDIN, &FIONREAD, $n) or die$!; print unpack "L", $n" <> "$fifo_file"
Vegye figyelembe azonban, hogy bár nem “t olvas a cső tartalma, a megnevezett cső puszta kinyitása itt is okozhat mellékhatásokat. A fuser
használatával először ellenőrizzük, hogy valamilyen folyamatnak van-e már nyitott csöve ennek enyhítésére, de ez nem bolondbiztos, mint fuser
nem tudja ellenőrizni az összes folyamatot.
Mostanáig csak a fájlokkal társított elsődleges adatok méretét vettük figyelembe.Ez nem veszi figyelembe a metaadatok méretét és a fájl tárolásához szükséges összes támogató infrastruktúrát.
A stat()
által visszaadott másik inode attribútum a st_blocks
. Ez az 512 bájtos blokkok száma, amelyet a fájl adatainak (és néha egyes metaadatainak, például a kiterjesztett attribútumoknak az ext4 fájlrendszereken való tárolásához használnak Linuxon) használnak. Ez nem “nem tartalmazza magát az inode-ot vagy a fájlokhoz kapcsolódó könyvtárak bejegyzéseit.
A méret és a lemezhasználat nem feltétlenül szorosan kapcsolódik egymáshoz, például tömörítés, ritkaság (néha néhány metaadat), extra infrastruktúra, például közvetett blokkok egyes fájlrendszerekben ez utóbbira van hatással.
Ezt általában a du
használja a lemezhasználat jelentésére. A fent felsorolt parancsok többsége képes lesz megkapja ezeket az információkat.
-
POSIXLY_CORRECT=1 ls -sd -- "$file" | awk "{print $1; exit}"
-
POSIXLY_CORRECT=1 du -s -- "$file"
(nem könyvtárakhoz ahol ez magában foglalná a lemez usag-ot e fájlok). - 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"
Megjegyzések
- egyértelműen a legátfogóbb és leginformatívabb válasz. köszönöm. ezt használhatom crossplatform bash szkriptek létrehozására a BSD és a GNU statisztikák információinak felhasználásával
- Szórakoztató tény: A GNU coreutils
wc -c
fstat
, de ezután beolvassa az utolsó up-tost_blksize
bájtokat. Nyilvánvaló, hogy ez azért van, mert a Linux fájljai ‘ s/proc
és statisztikai mérete csak hozzávetőleges . Ez jó a helyességhez, de rossz, ha a fájl vége a lemezen van, és nincs a memóriában (pl. Ha egy hurokban sok fájlra használják). És nagyon rossz, ha a fájlt sorközeli szalagos tárolóba , vagy pl. egy FUSE átlátszó dekompressziós fájlrendszer. - ez sem működne
ls -go file | awk '{print $3}'
- @StevenPenny azoknak
-go
a SysV-ké lenne, ők nem ‘ nem dolgoznának BSD-ken (opcionális (XSI) a POSIX-ban). ‘ Szüksége van mégls -god file | awk '{print $3; exit}'
(-d
, hogy könyvtárakon működjön,exit
szimbolikus linkek esetén új vonallal a célpontban). Az eszközfájlokkal kapcsolatos problémák továbbra is fennállnak. - @ αғsнιη az Unix API nem tesz különbséget a szöveges és a bináris fájlok között. ‘ minden bájtsorozatot tartalmaz. Néhány alkalmazás érdemes ezeket a bájtokat szövegként értelmezni, de nyilvánvalóan nem a
wc -c
, amely a bájtok számát jelenti.
Válasz
Ez a szkript számos módon ötvözi a fájlméretet:
( 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}"
A szkript sok Unix rendszerben működik beleértve a Linuxot, a BSD-t, az OSX-et, a Solaris-t, a SunOS-t stb.
A fájlméret a bájtok számát mutatja. Ez a látszólagos méret, vagyis az a bájt, amelyet a fájl egy tipikus lemezen használ, különösebb tömörítés, speciális ritka területek vagy el nem osztott blokkok stb. Nélkül.
Ennek a szkriptnek van egy produkciós verziója, több segítséggel és további lehetőségek itt: https://github.com/SixArm/file-size
Válasz
stat ezt a legkevesebb rendszerhívással teszi:
$ 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
A válasz
ls -l filename
rengeteg információt ad egy fájlról, beleértve a fájl méretét, engedélyeit és tulajdonosát.
A fájl mérete az ötödik oszlopban, és bájtokban jelenik meg. Az alábbi példában a fájlméret alig 2KB alatt van:
-rw-r--r-- 1 user owner 1985 2011-07-12 16:48 index.php
Szerkesztés: Ez nyilvánvalóan nem annyira megbízható, mint a stat
parancs.
Megjegyzések
- szerintem a
ls -l
és astat
parancs egyaránt megbízható méretinformációt ad. Nem találtam ellenkező utalást. Als -s
megadja a blokkok számát. - @ dabest1 ez ‘ nem megbízható bizonyos értelemben, másik unix, a kimenetük eltérő lehet (és egyes unixeknél ez is van).
- Igen, IIRC, Solaris nem ‘ nem jelenítette meg alapértelmezés szerint a csoport nevét, kevesebb oszlopot eredményez a kimenetben.
- Mivel a méret tiszta numerikus, üres szóköz veszi körül, és a dátum év tiszta numerikus, meghatározott formátumban, lehetséges lenne egy regexp használatával kezelni a felhasználót + tulajdonos mint egy mező, függetlenül attól, hogy a csoport jelen volt-e. (gyakorlat az olvasó számára!)
Válasz
du filename
megmondja a lemezhasználatot bájtokban.
Inkább a du -h filename
-t részesítem előnyben, amely az ember számára olvasható formátumban adja meg a méretet.
Megjegyzések
- hogy vagy
stat -c "%s"
😉 - A
du
íze ezt a blokkot nyomtatja ki 1024 bájt, nem egyszerű bájtok száma. - Ne feledje, hogy a standard
du
512 bájtos egységek kimenetét adja. A GNUdu
kibibyte-okat használ, kivéve, ha a környezetébenPOSIXLY_CORRECT
-vel hívják. - könyvtár típusú fájlokhoz , amely megadja a könyvtár, valamint az összes többi fájl (rekurzív) lemezhasználatát.
Válasz
Hozzon létre olyan kis segédfunkciókat a shell szkriptjeiben, amelyekre delegálhatja őket.
Példa
#! /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
A @ Stéphane Chazelas információi alapján “válasz.
Megjegyzések
- Lásd még:
gzip -v < file > /dev/null
a fájl tömöríthetőségének ellenőrzéséhez. - @St é phaneChazelák nem biztosak benne, hogy szerintem javulás volt-e. Ezek az esetmegállapítások könnyen elrugaszthatják a noobokat; biztosan soha nem emlékszem, hogyan lehetne ezeket rendbe hozni 🙂 az esetbemutatók eredendően hordozhatóbbak, mivel Ön csináltam? úgy látom, hogy kétnél több eset van, de különben … +
- feltételezem, hogy ‘ ez is ízlés kérdése, de itt ‘ s az a tipikus eset, amikor ‘ egy
case
utasítás.case
a Bourne / POSIX konstrukció, amely a minták egyeztetését végzi.[[...]]
csak a ksh / bash / zsh (változatokkal).
Válasz
Találtam egy AWK 1 vonalhajózást, és hibája volt, de kijavítottam. A TeraBytes után PetaBytes-be is tettem.
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] }")
Figyelembe véve a stat nincs minden egyes rendszeren, szinte mindig használhatja az AWK megoldást. Példa; a Raspberry Pi-nek nincs stat , de awk .
Megjegyzések
- Teljesen NEM az, amit az OP kért, de szép kis alkotás.
Válasz
Magam is szeretem a wc opciót. A “bc” -vel párosítva tetszőleges helyre kaphat tizedesjegyeket.
Arra törekedtem, hogy javítsak egy olyan szkriptet, amellyel az awk kiadta az “ls -” fájlméret “oszlopot. alh “parancs. Nem akartam csak egész fájlméreteket, és úgy tűnt, hogy két tizedesjegy megfelel, ezért a vita elolvasása után előálltam az alábbi kóddal.
Azt javaslom, hogy szakítsa meg a pontosvesszők vonalát, ha ezt beírja egy szkriptbe.
file=$1; string=$(wc -c $file); bite=${string% *}; okay=$(echo "scale=2; $bite/1024" | bc);friend=$(echo -e "$file $okay" "kb"); echo -e "$friend"
Saját a szkript neve gpfl , a “képfájl hosszának lekérése” kifejezésre. Használom, miután mogrify t hajtok végre egy fájlon az imagemagick alkalmazásban, mielőtt képet nyitnék vagy újratöltenék egy GUI jpeg nézőben.
Nem tudom, hogy ez hogyan értékelhető “válasz”, mivel sokat kölcsönöz abból, amit már felajánlottak és megvitattak. Tehát ott hagyom.
BZT
Megjegyzések
- Szeretném használni ” stat ” vagy ” ls “. Általában nem ‘ nem szeretem a ” wc ” fájlt használni, mert fizikailag elolvassa az egész fájlt. Ha sok fájlja van, vagy különösen nagy fájlja van, ez sok időt vehet igénybe. De a megoldása kreatív … + 1.
- Egyetértek az elképzelésekkel ” stat ” használatával ” wc ” a fájlmérethez, azonban ha a ” wc -c ” fájlt használja, akkor az adatok nem lesznek olvashatók; ehelyett az kitalálni a fájl bájtjainak számát. lingrok.org/xref/coreutils/src/wc.c#228
- @ bbaja42 : vegye figyelembe, hogy a GNU Coreutils beolvassa a fájl utolsó blokkját, abban az esetben, ha a
stat.st_size
csak közelítés volt (mint a Linux esetében:/proc
és/sys
fájlok). Gondolom, úgy döntöttek, hogy nem bonyolítják a fő megjegyzést, amikor pár sorral lejjebb adták ezt a logikát: lingrok.org/xref/coreutils/src/wc.c#246
Válasz
A leggyorsabb és legegyszerűbb (IMO) módszer:
bash_var=$(stat -c %s /path/to/filename)
Megjegyzések
- Ezután szavazzon egy vagy több meglévő választ, amely említi a stat-t; nem kell újra megismételni …
- @JeffSchaller Most Stephane ‘ válaszát szavaztam meg az utasításaid alapján.Úgy gondolom, hogy ez túl bonyolult a céljaimhoz. Ezért tettem közzé ezt az egyszerű választ hasonló gondolkodású lelkeknek.
- Köszönöm; ‘ csak egy ” stat ” hatodik példánya A / div> answer nem ‘ t nem egyszerűsíti ezt a Q & A-t, de inkább egy új olvasót kérdezne meg maguktól ” miben különbözik ez a válasz a többitől? ” és kevesebb zavart okoz.
- Gondolom, @JeffSchaller. De panaszkodhatnék a sok
du
éswc
válaszra, amelyekre vonatkozó felelősség kizárása szükséges SOHA NE TEGYE EZT valójában élet. A válaszomat ma egy való életben használtam, és úgy gondoltam, hogy érdemes megosztani. Azt hiszem, mindannyiunk véleménye megvonja a vállát .
pv
éscat
az előrehaladást és az ETA-t bemutató másolási parancshoz:-s
, így egyszerűen tesztelheti, hogy egy fájlnak nincs-e nulla hossza, aif [ -s file ]; then echo "file has nonzero size" ; fi