GNU/Linux >> Tutoriels Linux >  >> Linux

Comment puis-je créer un fichier avec une taille spécifique à partir d'une ligne de commande ?

Utilisez truncate :

truncate -s 14M filename

À partir de 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

Remarque :truncate peut ne pas être disponible sur votre système, par ex. sur Mac OS X, il n'est pas installé par défaut (mais vous pouvez facilement l'installer, en utilisant macports par exemple). Dans ces cas, vous devrez peut-être utiliser dd ou head à la place.


EDIT :le moyen le plus simple est probablement le truncate de la réponse d'Ashutosh Vishwa Bandhu, mais comme l'a souligné @ offby1, cela crée des fichiers clairsemés qui peuvent ne pas être ce que vous voulez. Les solutions ci-dessous créent des fichiers normaux et complets.

Les commandes suivantes créent un fichier de 14 Mo appelé foo :

  1. fallocate (merci à @Breakthrough qui l'a suggéré dans les commentaires et votez pour la réponse d'Ahmed Masud ci-dessous qui le mentionne également.)

    fallocate -l 14000000 foo
    

    Cette commande est particulièrement impressionnante car elle est aussi rapide que truncate (instantané) quelle que soit la taille de fichier souhaitée (contrairement aux autres solutions qui seront lentes pour les gros fichiers) et crée pourtant des fichiers normaux, pas clairsemés :

    $ 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. Créer un fichier rempli de données aléatoires

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

    ou

    head -c 14MB /dev/urandom > foo
    
  3. Créer un fichier rempli de \0 s :

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

    ou

    head -c 14MB /dev/zero > foo
    
  4. Créez un fichier rempli avec les 14 premiers Mo de données d'un autre fichier :

    head -c 14MB bar.txt > foo
    
  5. Créez un fichier rempli avec les 14 derniers Mo de données d'un autre fichier :

    tail -c 14MB bar.txt > foo
    

Dans tous les exemples ci-dessus, le fichier sera 14*1000*1000 si vous voulez 14*1024*1024 , remplacez MB avec M . Par exemple :

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

fallocate ne traite qu'en octets, vous devrez donc faire (14*1024*1024=14680064)

fallocate -l 14680064 foo

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

AVERTISSEMENT dd écrasera silencieusement tout vous avez le droit d'écrire, si vous le spécifiez volontairement ou par accident. Assurez-vous de comprendre dd , par exemple. avec lecture dd --help , et vous ne gâchez pas vos lignes de commande dd, sinon vous pouvez facilement créer une perte de données irréversible - même totale .

Pour commencer, if= est le fichier d'entrée et of= est le fichier de sortie . Toujours vérifiez que vous avez bien compris avant d'exécuter la commande. :)


Linux
  1. Réduisez la taille du PDF avec cette astuce de ligne de commande

  2. Comment afficher des lignes spécifiques d'un fichier dans la ligne de commande Linux

  3. Comment créer un fichier avec une taille donnée sous Linux ?

  4. Comment remplacer un fichier en jar par une ligne de commande sous Linux ?

  5. Comment puis-je ouvrir un fichier en lecture seule à partir de la ligne de commande avec emacs/vi/vim

Comment créer un fichier sous Linux à l'aide d'un terminal/ligne de commande

Créer des e-mails temporaires à partir de la ligne de commande avec Tmpmail

Comment envoyer un e-mail avec une pièce jointe à partir de la ligne de commande

Comment supprimer des lignes d'un fichier à l'aide de la commande Sed

Comment puis-je écrire sur dmesg à partir de la ligne de commande ?

Comment puis-je ouvrir un fichier avec des numéros de ligne affichés à partir de la ligne de commande dans 'vi' ?