it-swarm.com.de

Teilen Sie eine Datei zeilenweise und haben Sie die Kontrolle über die resultierende Dateierweiterung

Es gibt einen Standardbefehl zum Aufteilen von Dateien - Teilen.

Wenn ich beispielsweise eine Wortdatei in mehrere Abschnitte mit 10000 Zeilen aufteilen möchte, kann ich Folgendes verwenden:

split -dl 10000 words wrd

und es würde mehrere Dateien der Form wrd.01, wrd.02 und so weiter erzeugen.

Ich möchte jedoch eine bestimmte Erweiterung für diese Dateien haben, z. B. die Dateien wtd.01.txt und wrd.02.txt.

Gibt es eine Möglichkeit, dies zu tun?

29
Rogach

Nicht mit split, aber Sie können sie anschließend einfach umbenennen oder in awk:

awk '{filename = "wrd." int((NR-1)/10000) ".txt"; print >> filename}' inputfile
12
Kevin

Dies war damals noch nicht verfügbar, aber mit mehr neueren Versionen (≥ 8.16) Von gnu split Kann man den Schalter --additional-suffix Verwenden, um die Kontrolle über das zu haben resultierende Erweiterung. Von man split:

--additional-suffix=SUFFIX
              append an additional SUFFIX to file names.

wenn Sie diese Option verwenden:

split -dl 10000 --additional-suffix=.txt words wrd

die resultierenden Teile enden automatisch mit .txt:

wrd00.txt
wrd01.txt
.........
52
don_crissti

Solche Aufgaben werden am besten mit der Shell verwaltet. Verwenden Sie split und schreiben Sie eine einfache Schleife, um die Dateien umzubenennen. Z.B.

for file in wrd.*
do
    mv "$file" "$file.txt"
done

würde Ihre Dateien wrd.01, wrd.02 usw. umbenennen, damit sie alle die Erweiterung .txt haben.

14
Kyle Jones