
Ich möchte 100 Dateien mit einer Dateigröße von jeweils 10 MB erstellen. Gibt es einen einfachen Unix-Befehl, mit dem man ein Verzeichnis mit diesen 100 Dateien erstellen kann?
Antwort1
for x in {1..100}; do dd if=/dev/zero of=file$x bs=10485760 count=1; done
if=FILE (read from FILE instead of stdin)
of=FILE (write to FILE instead of stdout)
bs=BYTES (force ibs=BYTES and obs=BYTES)
ibs=BYTES (read BYTES bytes at a time)
obs=BYTES (write BYTES bytes at a time)
count=1 (copy only 1 input block)
Antwort2
Als Ergänzung zu Ochis Antwort können Sie mit dieser Methode 100 Dateien mit jeweils 10 MB erstellen, ohne 1 GB Speicherplatz zu verbrauchen und das mit blitzartiger Geschwindigkeit:
size=$((10*1024*1024))
nb_files=100
for n in $(seq -f "%03.0f" 1 $nb_files); do
dd if=/dev/zero of=file$n bs=1 count=1 seek=$((size-1))
done
(SehenSparse-Dateienfür mehr Details.)
Oder andersherum (hier gilt jedoch: Wenn Sie eine der Dateien bearbeiten, bearbeiten Sie alle):
size=$((10*1024*1024))
n=$(seq -f "%03.0f" 1 1)
dd if=/dev/zero of=file$n bs=1 count=1 seek=$((size-1))
nb_files=100
for m in $(seq -f "%03.0f" 2 $nb_files); do
ln file$n file$m
done
(SehenHardlinksfür mehr Details.)