Erstellen Sie eine Dateiliste und kürzen Sie diese in zwei Listen mit jeweils X MB Dateien.

Erstellen Sie eine Dateiliste und kürzen Sie diese in zwei Listen mit jeweils X MB Dateien.

Ich muss eine Liste aller Dateien in einem bestimmten Verzeichnis erstellen und sie in X-Listen kürzen, die jeweils eine feste Menge an Dateidaten enthalten.

Ich habe z. B. 95 GB Daten.

  • erzeugen der Dateiliste ( total.txt)
  • aufgeteilt total.txtin 3 Listen:
    1. slice1.txtenthält die Liste der ersten 35 GB an Dateien
    2. slice2.txtenthält die Liste der folgenden 35 GB an Dateien
    3. slice3.txtenthält die Liste der verbleibenden Dateien

Irgendein Tipp? Ich habe gegoogelt und mit find, awk und grep herumgespielt, aber diese Aufgabe scheint wirklich über meine Kompetenzen hinauszugehen.

Antwort1

Sie können versuchen, mit demTeiltBefehl zum Trennen Ihrer Dateien:

split total.txt -b 4444160

Das Obige würde total.txtin 35 GB große Dateien aufgeteilt.

Antwort2

while read filename; do cat $filename; done < total.txt | split -b 35G - slice

Dadurch werden „sliceaa“, „sliceab“ und „sliceac“ erstellt, die Sie umbenennen können.

Mit anderen Implementierungen vonsplitmüssen Sie vielleicht sagen-b 35000m

Wenn Sie Bash haben, können Sie schreiben

cat $(< total.txt) | split -b 35G - slice

Gehen Sie davon aus, dass es nicht Hunderte oder Tausende von Dateinamen gibt.

Erschaffentotal.txt

files=(*)
printf "%s\n" "${files[@]}" > total.txt

verwandte Informationen