Hogyan kaphatom meg a fájl méretét egy bash szkriptben?

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

  • stackoverflow.com/questions/5920333/how-to-check-size-of-a-file LOL az áttelepítéshez 🙂
  • Párosítsa ezt a pv és cat az előrehaladást és az ETA-t bemutató másolási parancshoz:
  • stat -c% s fájl. név
  • (nagyon szűk) XY probléma esetén ez ügyes: ha csak a fájl tesztelésére van szüksége, amely nem nulla méretű, akkor a bash feltételes kifejezéssel rendelkezik -s, így egyszerűen tesztelheti, hogy egy fájlnak nincs-e nulla hossza, a if [ -s file ]; then echo "file has nonzero size" ; fi

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 javasolt wc -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 a stat --printf="%s" file.any | xxd - és a stat -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 a du á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, így size=$(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 a fstat, de utána a fájl második utolsó blokkjára törekszik, és felolvassa az utolsó legfeljebb st_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 a wc a tényleges méretet akarja jelenteni, nem pedig a stat által jelentett méretet. Azt hiszem, furcsa lenne, ha wc -c más méretet jelentene, mint a wc, 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észt echo 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 a strace 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 (a zsh/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-to st_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ég ls -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 a stat parancs egyaránt megbízható méretinformációt ad. Nem találtam ellenkező utalást. A ls -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 GNU du kibibyte-okat használ, kivéve, ha a környezetében POSIXLY_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 és wc 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 .

    Vélemény, hozzászólás?

    Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük