GNU/Linux >> Znalost Linux >  >> Linux

Jak mohu vytvořit soubor s určitou velikostí z příkazového řádku?

Použijte truncate :

truncate -s 14M filename

Od man truncate :

DESCRIPTION
   Shrink or extend the size of each FILE to the specified size

[...]

 -s, --size=SIZE
          set or adjust the file size by SIZE

Poznámka:truncate nemusí být ve vašem systému k dispozici, např. na Mac OS X není ve výchozím nastavení nainstalován (ale můžete jej snadno nainstalovat, například pomocí macportů). V těchto případech možná budete muset použít dd nebo head místo toho.


EDIT:Nejjednodušší způsob je pravděpodobně truncate z odpovědi Ashutosh Vishwa Bandhu, ale jak poukázal @offby1, vytváří řídké soubory, které nemusí být to, co chcete. Níže uvedená řešení vytvářejí normální úplné soubory.

Následující příkazy vytvoří 14MB soubor s názvem foo :

  1. fallocate (díky @Breakthrough, který to navrhl v komentářích a hlasujte pro odpověď Ahmeda Masuda níže, která to také zmiňuje.)

    fallocate -l 14000000 foo
    

    Tento příkaz je obzvláště působivý, protože je rychlý jako truncate (okamžité) bez ohledu na požadovanou velikost souboru (na rozdíl od jiných řešení, která budou u velkých souborů pomalá) a přesto vytvoří normální soubory, nikoli řídké:

    $ truncate -s 14MB foo1.txt 
    $ fallocate -l 14000000 foo2.txt 
    $ ls -ls foo?.txt 
        0 -rw-r--r-- 1 terdon terdon 14000000 Jun 21 03:54 foo1.txt
    13672 -rw-r--r-- 1 terdon terdon 14000000 Jun 21 03:55 foo2.txt
    
  2. Vytvořte soubor naplněný náhodnými daty

    dd if=/dev/urandom of=foo bs=14MB count=1
    

    nebo

    head -c 14MB /dev/urandom > foo
    
  3. Vytvořte soubor s \0 s:

    dd if=/dev/zero of=foo.txt bs=14MB count=1
    

    nebo

    head -c 14MB /dev/zero > foo
    
  4. Vytvořte soubor naplněný prvními 14 MB dat jiného souboru:

    head -c 14MB bar.txt > foo
    
  5. Vytvořte soubor obsahující posledních 14 MB dat jiného souboru:

    tail -c 14MB bar.txt > foo
    

Ve všech výše uvedených příkladech bude soubor 14*1000*1000 pokud chcete 14*1024*1024 , nahraďte MB s M . Například:

dd if=/dev/urandom of=foo bs=14M count=1
head -c 14M /dev/zero > foo

fallocate pouze obchody v bajtech, takže byste museli udělat (14*1024*1024=14680064)

fallocate -l 14680064 foo

dd bs=1MB count=14 if=/dev/zero of=<yourfilename>

UPOZORNĚNÍ dd tiše přepíše cokoli máte právo napsat, pokud to uvedete dobrovolně nebo náhodou. Ujistěte se, že rozumíte dd , např. se čtením dd --help a nepokazíte si příkazové řádky dd, jinak můžete snadno způsobit nevratnou ztrátu dat – dokonce celkovou .

Pro začátek if= je vstupní soubor a of= je výstupní soubor . Vždy před spuštěním příkazu dvakrát zkontrolujte, zda jste to udělali správně. :)


Linux
  1. Zmenšete velikost PDF pomocí tohoto triku s příkazovým řádkem

  2. Jak zobrazit konkrétní řádky souboru v příkazovém řádku Linuxu

  3. Jak vytvořit soubor s danou velikostí v Linuxu?

  1. Jak mohu spustit kód PHP z příkazového řádku?

  2. Jak nahradit soubor v jar příkazovým řádkem v linuxu?

  3. Jak mohu otevřít soubor pouze pro čtení z příkazového řádku pomocí emacs/vi/vim

  1. Jak vytvořit zaváděcí USB ze zaváděcího ISO pomocí příkazového řádku v Linuxu?

  2. Jak mohu zapisovat do dmesg z příkazového řádku?

  3. Jak mohu otevřít soubor s čísly řádků zobrazenými z příkazového řádku v 'vi'?