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?
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
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
.........
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.