GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo puedo crear un archivo con un tamaño específico desde una línea de comando?

Usa truncate :

truncate -s 14M filename

Desde 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 puede no estar disponible en su sistema, p. en Mac OS X no está instalado de manera predeterminada (pero puede instalarlo fácilmente, usando macports, por ejemplo). En estos casos, es posible que deba usar dd o head en su lugar.


EDITAR:La forma más sencilla es probablemente el truncate de la respuesta de Ashutosh Vishwa Bandhu, pero como lo señaló @ offby1, eso crea archivos dispersos que pueden no ser lo que desea. Las soluciones a continuación crean archivos normales y completos.

Los siguientes comandos crean un archivo de 14 MB llamado foo :

  1. fallocate (gracias a @Breakthrough que lo sugirió en los comentarios y votó la respuesta de Ahmed Masud a continuación, que también lo menciona).

    fallocate -l 14000000 foo
    

    Este comando es particularmente impresionante ya que es tan rápido como truncate (instantáneo) independientemente del tamaño de archivo deseado (a diferencia de otras soluciones que serán lentas para archivos grandes) y, sin embargo, crea archivos normales, no dispersos:

    $ 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 archivo lleno de datos aleatorios

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

    o

    head -c 14MB /dev/urandom > foo
    
  3. Crea un archivo lleno de \0 s:

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

    o

    head -c 14MB /dev/zero > foo
    
  4. Cree un archivo con los primeros 14 MB de datos de otro archivo:

    head -c 14MB bar.txt > foo
    
  5. Cree un archivo con los últimos 14 MB de datos de otro archivo:

    tail -c 14MB bar.txt > foo
    

En todos los ejemplos anteriores, el archivo será 14*1000*1000 si quieres 14*1024*1024 , reemplaza MB con M . Por ejemplo:

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

fallocate solo trata en bytes, por lo que tendría que hacer (14*1024*1024=14680064)

fallocate -l 14680064 foo

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

ADVERTENCIA dd sobrescribirá silenciosamente cualquier cosa tiene derecho a escribirle, si lo especifica voluntariamente o por accidente. Asegúrate de entender dd , p.ej. con lectura dd --help , y no estropea sus líneas de comando dd o puede crear fácilmente una pérdida de datos irreversible, incluso total .

Para empezar, if= es el archivo de entrada y of= es el archivo de salida . Siempre Verifique dos veces que lo hizo bien, antes de ejecutar el comando. :)


Linux
  1. Cómo mostrar líneas específicas de un archivo en la línea de comandos de Linux

  2. ¿Cómo puedo encontrar un archivo específico desde una terminal Linux?

  3. ¿Cómo puedo ejecutar una función desde un script en la línea de comandos?

  4. ¿Cómo puedo ejecutar código PHP desde la línea de comandos?

  5. ¿Cómo borrar el contenido de un archivo desde la línea de comando?

Cómo crear un archivo en Linux usando Terminal/Línea de comando

Cree correos electrónicos temporales desde la línea de comandos con Tmpmail

Cómo enviar un correo electrónico con un archivo adjunto desde la línea de comandos

Cómo quitar líneas de un archivo usando el comando Sed

¿Cómo crear un USB de arranque desde un ISO de arranque con la línea de comandos en Linux?

¿Cómo puedo escribir en dmesg desde la línea de comandos?