GNU/Linux >> Linux Esercitazione >  >> Linux

Come posso creare un file con una dimensione specifica da una riga di comando?

Usa truncate :

truncate -s 14M filename

Da 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

Nota:truncate potrebbe non essere disponibile sul tuo sistema, ad es. su Mac OS X non è installato di default (ma puoi installarlo facilmente, usando ad esempio macports). In questi casi potrebbe essere necessario utilizzare dd o head invece.


EDIT:Il modo più semplice è probabilmente il truncate della risposta di Ashutosh Vishwa Bandhu, ma come sottolineato da @ offby1 che crea file sparsi che potrebbero non essere ciò che desideri. Le soluzioni seguenti creano file normali e completi.

I seguenti comandi creano un file di 14 MB chiamato foo :

  1. fallocate (grazie a @Breakthrough che lo ha suggerito nei commenti e vota la risposta di Ahmed Masud di seguito che lo menziona anche.)

    fallocate -l 14000000 foo
    

    Questo comando è particolarmente impressionante poiché è veloce quanto truncate (istantaneo) indipendentemente dalla dimensione del file desiderata (a differenza delle altre soluzioni che saranno lente per file di grandi dimensioni) e tuttavia crea file normali, non sparsi :

    $ 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. Crea un file pieno di dati casuali

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

    o

    head -c 14MB /dev/urandom > foo
    
  3. Crea un file pieno di \0 s:

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

    o

    head -c 14MB /dev/zero > foo
    
  4. Crea un file riempito con i primi 14 MB di dati di un altro file:

    head -c 14MB bar.txt > foo
    
  5. Crea un file riempito con gli ultimi 14 MB di dati di un altro file:

    tail -c 14MB bar.txt > foo
    

In tutti gli esempi precedenti, il file sarà 14*1000*1000 se vuoi 14*1024*1024 , sostituire MB con M . Ad esempio:

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

fallocate tratta solo in byte, quindi dovresti fare (14*1024*1024=14680064)

fallocate -l 14680064 foo

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

ATTENZIONE dd sovrascriverà silenziosamente qualsiasi cosa hai il diritto di scrivere a, se lo specifichi volontariamente o per caso. Assicurati di aver compreso dd , per esempio. con lettura dd --help , e non rovini le tue linee di comando dd altrimenti puoi facilmente creare una perdita di dati irreversibile - anche totale .

Per cominciare, if= è il file di input e of= è il file di output . Sempre ricontrolla di aver capito bene, prima di eseguire il comando. :)


Linux
  1. Riduci le dimensioni del PDF con questo trucco da riga di comando

  2. Eliminazione di righe specifiche da un file nella riga di comando di Linux

  3. Come creare un file con una determinata dimensione in Linux?

  4. Come sostituire un file in jar con la riga di comando in Linux?

  5. Come posso aprire un file in sola lettura dalla riga di comando con emacs/vi/vim

Come creare un file in Linux utilizzando Terminale/riga di comando

Crea e-mail temporanee dalla riga di comando con Tmpmail

Come inviare un'e-mail con allegato file dalla riga di comando

Come rimuovere le righe da un file usando il comando Sed

Come posso eseguire il codice PHP dalla riga di comando?

Come cancellare il contenuto di un file dalla riga di comando?