Je voudrais générer des fichiers factices dans bash. Le contenu importe peu, si c'était aléatoire, ce serait bien, mais tout octet identique est également acceptable.
Ma première tentative a été la commande suivante:
rm dummy.Zip;
touch dummy.Zip;
x=0;
while [ $x -lt 100000 ];
do echo a >> dummy.Zip;
x=`expr $x + 1`;
done;
Le problème était sa mauvaise performance. J'utilise GitBash sous Windows, donc cela pourrait être beaucoup plus rapide sous Linux, mais le script n'est évidemment pas optimal.
Pourriez-vous me suggérer un moyen plus rapide et agréable de générer des fichiers factices (binaires) de taille donnée?
Vous pouvez essayer la commande head
:
$ head -c 100000 /dev/urandom >dummy
Vous pouvez utiliser dd à cette fin:
dd if=/dev/urandom bs=1024 count=5 of=dummy
Notez que
x=`expr $x + 1`;
n'est pas le moyen le plus efficace de calculer en bash. Effectuez un calcul entier arithmétique selon une double parenthèse:
x=((x+1))
Mais pour un compteur incrémenté dans une boucle, il y avait la boucle for inventée:
x=0;
while [ $x -lt 100000 ];
do echo a >> dummy.Zip;
x=`expr $x + 1`;
done;
contrairement à:
for ((x=0; x<100000; ++x))
do
echo a
done >> dummy.Zip
Voici 3 choses à noter:
Mais il existe encore une forme plus simple de la boucle for:
for x in {0..100000}
do
echo a
done >> dummy.Zip
Cela générera un fichier texte de 100 000 octets:
yes 123456789 | head -10000 > dummy.file
$ openssl Rand 1000000 -out random.tmp
Si votre système de fichiers est ext4, btrfs, xfs ou ocfs2 et que vous ne vous souciez pas du contenu, vous pouvez utiliser fallocate
. C'est la méthode la plus rapide si vous avez besoin de gros fichiers.
fallocate -l 100KB dummy_100KB_file
Voir " Créer rapidement un fichier volumineux sur un système Linux? " pour plus de détails.
Peut-être
dd if=/dev/zero of=/dummy10MBfile bs=1M count=10
Moyen facile:
faire un test de fichier et mettre une ligne "test"
Puis exécutez:
cat test >> test
ctrl + c après une minute donnera beaucoup de gigaoctets :)
echo "Pour imprimer le mot dans l'ordre du fichier" c = 1 pour w dans cat file
faire echo "$ c. $ w" c = expr $c +1
terminé