použijte funkci truncate
http://linux.die.net/man/2/truncate
int truncate(const char *path, off_t length);
int ftruncate(int fd, off_t length);
truncate převezme název souboru
ftruncate má otevřený deskriptor souboru
oba nastavují délku souboru na length
takže se buď zkrátí, nebo prodlouží (v druhém případě bude zbytek souboru vyplněn NULL/ZERO)
[upravit]
truncate (příkaz linuxového shellu) bude také fungovat
**SYNTAX**
truncate -s integer <filename>
**OPTIONS**
-s number specify the new file length. If the new length is smaller than the current filelength data is lost. If the new length is greater the file is padded with 0. You can specify a magnitude character to ease large numbers:
b or B size is bytes.
k size is 1000 bytes.
K size is 1024 bytes.
m size is 10^6 bytes.
M size is 1024^2 bytes.
g size is 10^9 bytes.
G size is 1024^3 bytes.
**EXAMPLES**
To shrink a file to 10 bytes:
truncate -s 10 /tmp/foo
To enlarge or shrink a file to 345 Megabytes:
truncate -s 345M /tmp/foo
[/edit]
Ačkoli tam bylo mnoho odkazů na truncate
funkce v tomto vláknu, nikdo skutečně neodpověděl na otázku OP o zmenšení souboru o pevnou částku ze skriptovacího prostředí. Kevinova odpověď použila truncate
změnit velikost cílového souboru na pevné množství, ale správnost tohoto řešení samozřejmě vyžaduje, aby uživatel nejprve znal velikost cílového souboru mínus nadbytečná data na konci. Takže máme:
-s, --size=SIZE set or adjust the file size by SIZE bytes
Truncate
ve skutečnosti podporuje odstranění dat z konce cílového souboru přímo přidáním předpony SIZE -
charakter.
Chcete-li například změnit velikost souboru o 314 bajtů, můžete provést:
truncate --size=-314 target_file.bin
Použití "zkrátit" je nejlepší způsob, jen zveřejním několik příkladů:
-
Mám soubor "PNav-h.db", má 50176 bajtů.
-rw-r--r-- 1 user user 50176 Mar 8 23:43 PNav-h.db $truncate -s 1000 PNav-h.db
nastaví velikost souboru na 1000 bajtů
-rw-r--r-- 1 user user 1000 Mar 9 00:02 PNav-h.db
-
Pro váš případ použijte
$truncate --size=xxx xxfilename
pomocí-<size number>
zmenšit velikost souboru$truncate --size=-300 PNav-h.db -rw-r--r-- 1 user user 700 Mar 9 00:07 PNav-h.db
konečná velikost souboru =1000-300=700
-
pomocí
+<size number>
pro zvětšení velikosti souboru$truncate --size=+500 PNav-h.db -rw-r--r-- 1 user user 1200 Mar 9 00:09 PNav-h.db
konečná velikost souboru =700 + 500 =1200
-
pokud neexistuje
-
nebo+
, slouží k nastavení velikosti souboru.$truncate --size=60000 PNav-h.db -rw-r--r-- 1 user user 60000 Mar 9 00:12 PNav-h.db
konečná velikost souboru nastavena na 60 000