2010-06-04 24 views
1

Je vais créer souvent un fichier d'une taille particulière avec un truc commeComment « zéro » un fichier avec 1 de

dd if=/dev/zero of=1gb.dd bs=1M count=1024 

ou peut-être même

dd if=/dev/urandom of=1gb.dd bs=1M count=1024 
dd if=/dev/random of=1gb.dd bs=1M count=1024 

Mais si je veux obtenir tous les 1 au lieu de 0 ou au hasard?

Répondre

2

Pour les données aléatoires, dans la plupart des cas, utilisez /dev/urandom. (Vous pouvez également utiliser /dev/random, mais qui est beaucoup plus lent, car il est l'entropie liée urandom est un PRNG qui auto-graines de random..)

Pour un fichier non nul, je vous suggère quelque chose comme ceci:

perl -e 'print chr(0xff) x 1000' > t 

Évidemment, personnalisez le 0xff et 1000 au goût.

+1

'python -c" print chr (0x31) * 1000 "> t' Quelque chose de python aromatisé. – zdav

-2

Ajoutez une autre commande là-bas après votre disque dur.

sed 's/0/1/g' file.txt 

Il remplacera tous les 0 par des 1.

probablement une meilleure solution là-bas, mais cela devrait fonctionner :-)

Edit: Vous avez effectivement conduit le résultat de ce soit dans un nouveau fichier ou remplacer le même fichier. sed imprime par défaut à l'écran (IIRC)

+0

Je me demande combien de temps sed prendrait sur le fichier 1Gb. – DVK

+11

C'est faux./dev/zero a tous les bits zéro (0x00). Votre commande sed recherche le code ASCII 0 (0x30). –

1

Cela prend environ quatre fois plus longtemps que dd if=/dev/zero, mais seulement un peu plus longue que la commande Perl dans de crazyscot réponse:

touch shred.out; yes $'\xff' | tr -d $'\n' | shred --random-source=/dev/stdin --size=1G --iterations=1 shred.out 

Fait intéressant, cette commande similaire arrêté avant qu'il ne soit 1 Go:

yes $'\xff' | tr -d $'\n' | dd if=/dev/stdin of=1gb.dd bs=1M count=1024 
+1

+1 pour l'inventivité:] – DRL