Erstellen Sie ein Verzeichnis mit Dateien, die jeweils eine bestimmte Dateigröße haben

Erstellen Sie ein Verzeichnis mit Dateien, die jeweils eine bestimmte Dateigröße haben

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.)

verwandte Informationen