summaryrefslogtreecommitdiff
path: root/LINUX/Как разбить файл на части.md
blob: 88b812eac2aae8c0b2693a3326282c3bf12f3df0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
В некоторых случаях один файл нужно разбить на несколько частей, например, для загрузки либо копирования в случае слишком большого размера. Проще всего это сделать с помощью утилиты ==split.

Команда используется для разбивки файлов по размеру, количеству строк и на определенное количество составных частей.
### Разбить по размеру

Для этого используем опцию "-b", определяющую максимальный размер элемента. За основу возьмем файлик в 721 байт. Его нужно разбить на части по 100 байт. Для удобства зададим префикс имени "file-part_": 


`$ ls -l
`721 Apr 20 13:11 file_orig


`$ split -b 100 ./file_orig ./file-part_


Помимо оригинала появятся еще 8 файлов:


`$ ls -l
`721 Apr 20 13:11 file_orig
`100 Apr 20 13:12 file-part_aa
`...
`21 Apr 20 13:12 file-part_ah


Разбить по количеству строк

Может быть нужно разбить один текстовый документ на несколько, с количеством строк "<= n". В этом вопросе полезной окажется опция "-l". Команда поделит большой log-файл на части по 10 тысяч строк в каждом:


`$ split -l 1000 ~/Logs/log ~/Logs/log-part_

### Разбить на определённое количество файлов

Еще одна интересная задача, в решении которой поможет опция "-n". Размер будет, по возможности, поделен поровну. Достаточно прописать итоговое количество файлов и запустить команду:


`$ split -n 3 ./file_orig ./file-part_


`$ ls -l
`240 Apr 20 13:31 file-part_aa
`240 Apr 20 13:31 file-part_ab
`241 Apr 20 13:31 file-part_ac
`721 Apr 20 13:11 file_orig


Настройка имени частей файла

Как мы уже поняли, для split префикс определяет название части файла, после чего идет дефолтный суффикс из двух латинских букв. 

С помощью опций можно изменить его длину "-a", переключиться на числа "-d" или hex-символы "-x". В последних двух сценариях получится выбрать начальную точку отчета "--numeric-suffixes" для чисел и "--hex-suffixes" для hex-символов.

Возьмем задачу – разделить текстовый файл на 3 части равного размера, чтобы каждый из них имел префикс "file-part_" и числовой суффикс из одного символа, начиная с 1:


$ split -a 1 --numeric-suffixes=1 -n 3 ./file_orig ./file-part_


$ ls -l
240 Apr 20 13:36 file-part_1
240 Apr 20 13:36 file-part_2
241 Apr 20 13:36 file-part_3


Объединение частей файла

Следующий шаг – объединение нескольких частей в единый файл. Для этих целей отлично подойдет утилита cat. Сначала нужно задать имена частей, потом итоговый файл:


`cat ~/Archive/split-archive.part_* > ~/Archives/cat-archive.tar.gz