summaryrefslogtreecommitdiff
path: root/LINUX/Как разбить файл на части.md
diff options
context:
space:
mode:
Diffstat (limited to 'LINUX/Как разбить файл на части.md')
-rw-r--r--LINUX/Как разбить файл на части.md71
1 files changed, 71 insertions, 0 deletions
diff --git a/LINUX/Как разбить файл на части.md b/LINUX/Как разбить файл на части.md
new file mode 100644
index 0000000..88b812e
--- /dev/null
+++ b/LINUX/Как разбить файл на части.md
@@ -0,0 +1,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