GNU/Linux >> Znalost Linux >  >> Linux

Přenosný způsob, jak získat velikost souboru (v bajtech) v shellu?

wc -c < filename (zkratka pro počet slov, -c vytiskne počet bajtů) je přenosné řešení POSIX. Pouze výstupní formát nemusí být jednotný napříč platformami, protože některé mezery mohou být předřazeny (což je případ Solaris).

Nevynechejte přesměrování vstupu. Když je soubor předán jako argument, název souboru se vytiskne po počtu bajtů.

Bál jsem se, že to nebude fungovat pro binární soubory, ale funguje to OK na Linuxu i Solarisu. Můžete to zkusit s wc -c < /usr/bin/wc . Navíc je zaručeno, že nástroje POSIX zpracují binární soubory, pokud není výslovně uvedeno jinak.


Nakonec jsem napsal svůj vlastní program (opravdu malý), aby zobrazoval pouze velikost. Více informací zde:http://fwhacking.blogspot.com/2011/03/bfsize-print-file-size-in-bytes-and.html

Dva nejčistší způsoby podle mého názoru s běžnými nástroji Linuxu jsou:

$ stat -c %s /usr/bin/stat
50000

$ wc -c < /usr/bin/wc
36912

Ale já prostě nechci psát parametry nebo rouru výstup jen proto, abych získal velikost souboru, takže používám vlastní bfsize.


I když du obvykle vypisuje využití disku a ne skutečnou velikost dat, GNU coreutils du může vytisknout "zdánlivou velikost" souboru v bajtech:

du -b FILE

Ale nebude to fungovat pod BSD, Solaris, macOS, ...


Linux
  1. Deskriptory souborů a skriptování prostředí?

  2. Rozdíl ve výpočtu velikosti adresáře?

  3. Získat čas vytvoření/vytvoření souboru??

  1. Proč Ls a Hexdump nesouhlasí s velikostí souboru?

  2. Získat velikost vzdáleného souboru z terminálu?

  3. Získejte konkrétní řádek z textového souboru pouze pomocí skriptu Shell

  1. Jak upravit soubor na místě?

  2. Linuxový shell získá hodnotu pole ze souboru yml

  3. Existuje způsob, jak určit dekomprimovanou velikost souboru .bz2?