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.txt
in 3 Listen:slice1.txt
enthält die Liste der ersten 35 GB an Dateienslice2.txt
enthält die Liste der folgenden 35 GB an Dateienslice3.txt
enthä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.txt
in 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 vonsplit
mü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