Comment puis-je générer un fichier aléatoire rempli de numéro aléatoire ou de caractère dans le script shell? Je veux aussi spécifier la taille du fichier. P>
6 Réponses :
Utilisez la commande que lirait 5000 blocs de 1 Mo de données aléatoires, qui est un ensemble de 5 gigaoctets de Données aléatoires! p> Expérience avec bloquant l'argument pour obtenir la performance optimale. P> P> dd code> pour lire les données de /Dev/random.
dd if=/dev/random of=random.dat bs=1000000 count=5000
DD -BS = 1024 Nombre = 1 Si / dev / aléatoire de = Test, il ne génère pas la taille du fichier droit que je veux ...
@TadeUsz: On devrait généralement utiliser BS = 1M s'il veut MIB, pas MB.
Après une deuxième lecture de la question, je pense qu'il souhaitait également enregistrer uniquement des caractères (deviner des numéros alphabétiques) et des chiffres au fichier.
Cette commande DD est peu susceptible de terminer car il n'y aura pas 5 gigaoctets d'entropie disponibles. Utilisez / dev / urandom si vous en avez besoin de «aléatoire».
La variable aléatoire vous donnera un numéro différent à chaque fois:
echo $RANDOM
head -c 10 /dev/random | base64 | head -c 10 > rand.txt
Oups, a manqué les personnages et les chiffres, je suppose que vous voulez dire des caractères alphanumériques ... besoin de réviser.
Économie d'entropie: la dernière tendance de la vie verte des egologues. :)
Un bon démarrage serait:
http://linuxgazette.net/153/pfefer. HTML P>
#!/bin/bash # Created by Ben Okopnik on Wed Jul 16 18:04:33 EDT 2008 ######## User settings ############ MAXDIRS=5 MAXDEPTH=2 MAXFILES=10 MAXSIZE=1000 ######## End of user settings ############ # How deep in the file system are we now? TOP=`pwd|tr -cd '/'|wc -c` populate() { cd $1 curdir=$PWD files=$(($RANDOM*$MAXFILES/32767)) for n in `seq $files` do f=`mktemp XXXXXX` size=$(($RANDOM*$MAXSIZE/32767)) head -c $size /dev/urandom > $f done depth=`pwd|tr -cd '/'|wc -c` if [ $(($depth-$TOP)) -ge $MAXDEPTH ] then return fi unset dirlist dirs=$(($RANDOM*$MAXDIRS/32767)) for n in `seq $dirs` do d=`mktemp -d XXXXXX` dirlist="$dirlist${dirlist:+ }$PWD/$d" done for dir in $dirlist do populate "$dir" done } populate $PWD
enregistrer sous "script.sh", exécuter comme ./script.sh Taille. Le code Printf a été soulevé de http://mywiki.woolgedge.org/bashfaq/071 . Bien sûr, vous pouvez initialiser le tableau Mychars avec une force brute, mychars = ("0" "1" ... "..." ... "Z" "A" ... "Z"), mais ça ne serait pas Soyez amusant, ce serait-ce?
L'approche / dev / aléatoire et de base64 est également bonne, au lieu de la tuyauterie à travers la base64, du tuyau à travers "TR -C [: ALNUM:]", vous avez juste besoin de compter les bons caractères qui sortent jusqu'à ce que vous soyez terminé .
Créez 100 fichiers nommés de manière aléatoire de 50 Mo de taille de 50 Mo:
for i in `seq 1 100`; do echo $i; dd if=/dev/urandom bs=1024 count=50000 > `echo $RANDOM`; done
Il est préférable d'utiliser mktemp pour créer des fichiers aléatoires. pour i à SEQ 1 100; MyFile = mktemp --tmpdir =. Code> DD si = / dev / urandom BS = 1024 compte = 50000> $ myfile terminé
Quels caractères sont autorisés dans le fichier de sortie? Tout octet aléatoire ou juste ASCII alphanumérique d'octets?