it-swarm-eu.dev

Rozdělte soubor po řádku a mít kontrolu nad výslednou příponou souborů

Pro rozdělení souborů - rozdělení existuje standardní příkaz.

Pokud například chci rozdělit soubor slov na několik kousků po 10000 řádcích, mohu použít:

split -dl 10000 words wrd

a vygenerovalo by to několik souborů ve tvaru wrd.01, wrd.02 atd.

Ale chci mít pro tyto soubory konkrétní příponu - například chci získat soubory wtd.01.txt, wrd.02.txt.

Existuje způsob, jak to udělat?

29
Rogach

Ne s split, ale později je můžete snadno přejmenovat, nebo to můžete udělat v awk:

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

To tehdy nebylo k dispozici, ale s více nedávnými verzemi (≥ 8.16) z gnu split lze použít --additional-suffix přepínač mít kontrolu nad výsledné rozšíření. Z man split:

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

takže při použití této možnosti:

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

výsledné kusy se automaticky skončí v .txt:

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

Tyto úkoly lze nejlépe zvládnout pomocí Shell. Chcete-li přejmenovat soubory, použijte rozdělení a potom napište jednoduchou smyčku. Např.

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

přejmenoval soubory wrd.01, wrd.02 atd., takže všechny mají příponu .txt.

14
Kyle Jones