GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann ich eine Datei mit einer bestimmten Größe von einer Befehlszeile aus erstellen?

Verwenden Sie truncate :

truncate -s 14M filename

Ab man truncate :

DESCRIPTION
   Shrink or extend the size of each FILE to the specified size

[...]

 -s, --size=SIZE
          set or adjust the file size by SIZE

Hinweis:truncate möglicherweise nicht auf Ihrem System verfügbar, z. unter Mac OS X ist es nicht standardmäßig installiert (aber Sie können es einfach installieren, indem Sie beispielsweise macports verwenden). In diesen Fällen müssen Sie möglicherweise dd verwenden oder head stattdessen.


EDIT:Der einfachste Weg ist wohl der truncate von Ashutosh Vishwa Bandhus Antwort, aber wie von @offby1 darauf hingewiesen, werden Dateien mit geringer Dichte erstellt, die möglicherweise nicht Ihren Wünschen entsprechen. Die folgenden Lösungen erstellen normale, vollständige Dateien.

Die folgenden Befehle erstellen eine 14 MB große Datei mit dem Namen foo :

  1. fallocate (Danke an @Breakthrough, der es in den Kommentaren vorgeschlagen und Ahmed Masuds Antwort unten, in der es auch erwähnt wird, zugestimmt hat.)

    fallocate -l 14000000 foo
    

    Dieser Befehl ist besonders beeindruckend, da er so schnell wie truncate ist (sofort) unabhängig von der gewünschten Dateigröße (im Gegensatz zu den anderen Lösungen, die bei großen Dateien langsam sind) und erstellt dennoch normale Dateien, keine spärlichen:

    $ truncate -s 14MB foo1.txt 
    $ fallocate -l 14000000 foo2.txt 
    $ ls -ls foo?.txt 
        0 -rw-r--r-- 1 terdon terdon 14000000 Jun 21 03:54 foo1.txt
    13672 -rw-r--r-- 1 terdon terdon 14000000 Jun 21 03:55 foo2.txt
    
  2. Erstellen Sie eine Datei, die mit Zufallsdaten gefüllt ist

    dd if=/dev/urandom of=foo bs=14MB count=1
    

    oder

    head -c 14MB /dev/urandom > foo
    
  3. Erstellen Sie eine Datei, die mit \0 gefüllt ist s:

    dd if=/dev/zero of=foo.txt bs=14MB count=1
    

    oder

    head -c 14MB /dev/zero > foo
    
  4. Erstellen Sie eine Datei, die mit den ersten 14 MB an Daten einer anderen Datei gefüllt ist:

    head -c 14MB bar.txt > foo
    
  5. Erstellen Sie eine Datei, die mit den letzten 14 MB an Daten einer anderen Datei gefüllt ist:

    tail -c 14MB bar.txt > foo
    

In allen obigen Beispielen ist die Datei 14*1000*1000 wenn Sie 14*1024*1024 möchten , ersetzen Sie MB mit M . Zum Beispiel:

dd if=/dev/urandom of=foo bs=14M count=1
head -c 14M /dev/zero > foo

fallocate handelt nur in Bytes, also müssten Sie (14*1024*1024=14680064) machen

fallocate -l 14680064 foo

dd bs=1MB count=14 if=/dev/zero of=<yourfilename>

WARNUNG dd wird stillschweigend alles überschreiben Sie haben das Recht zu schreiben, wenn Sie es freiwillig oder versehentlich angeben. Stellen Sie sicher, dass Sie dd verstanden haben , z.B. mit dem Lesen von dd --help , und Sie vermasseln nicht Ihre dd-Befehlszeilen, sonst können Sie leicht irreversible Datenverluste verursachen - sogar total .

Zum Anfang if= ist die Eingabedatei und of= ist die Ausgabedatei . Immer Überprüfen Sie noch einmal, ob Sie es richtig gemacht haben, bevor Sie den Befehl ausführen. :)


Linux
  1. Verwenden Sie den Befehl fallocate, um Dateien einer bestimmten Größe in Linux zu erstellen

  2. So zeigen Sie bestimmte Zeilen einer Datei in der Linux-Befehlszeile an

  3. Löschen bestimmter Zeilen aus einer Datei in der Linux-Befehlszeile

  4. Wie kann ich eine bestimmte Datei von einem Linux-Terminal aus finden?

  5. Wie kann ich eine Funktion von einem Skript in der Befehlszeile ausführen?

So erstellen Sie eine Datei in Linux mit Terminal/Befehlszeile

Erstellen Sie temporäre E-Mails über die Befehlszeile mit Tmpmail

So senden Sie eine E-Mail mit Dateianhang von der Befehlszeile aus

So entfernen Sie Zeilen aus einer Datei mit dem Sed-Befehl

Wie erstelle ich einen bootfähigen USB von einem bootfähigen ISO mit der Befehlszeile unter Linux?

Wie kann ich von der Befehlszeile aus in dmesg schreiben?