Розбийте великий файл на більш дрібні шматки


65

Як розбити великий + + 4 ГБ файл на менші файли розміром близько 500 Мб .

І як я знову їх збираю, щоб отримати оригінальний файл?



Відповіді:


79

Можна використовувати спліт і кот .

Наприклад щось подібне

$ split --bytes 500M --numeric-suffixes --suffix-length=3 foo foo.

(де ім'я вхідного файлу fooі останній аргумент - вихідний префікс). Це створить файли, як foo.000 foo.001...

Ця ж команда з короткими параметрами:

$ split -b 100k -d -a 3 foo foo

Ви також можете вказати "--line-bytes", якщо ви хочете, щоб він розділився на межі рядків, а не просто точну кількість байтів.

Для повторної збірки створених фрагментів ви можете використовувати, наприклад:

$ cat foo.* > foo_2

.

Ви можете порівняти результат за допомогою:

$ cmp foo foo_2
$ echo $?

(яка повинна виводити 0)

Крім того, ви можете використовувати комбінацію знаходження / сортування / xargs, щоб повторно зібрати шматки:

$ find -maxdepth 1 -type f -name 'foo.*'  | sort | xargs cat > foo_3

2
Спробуйте цю команду:man split cat md5sum
Кевін М

6
Під час складання я рекомендую, cat foo.{000..NNN}де NNNє останній очікуваний шматок. Таким чином ви отримуєте повідомлення про помилку, якщо одна з деталей відсутня. Але зауважте, що -dотримання числових суфіксів є специфічним для розділення GNU; на інших платформах ви повинні зробити з foo.aaa, foo.aabі так далі
Жиль

1
І майте на увазі, що для splitКБ = 1000, К = 1024, МБ = 1000 * 1000, М = 1024 * 1024 і т.д.
Зоравар

1
Не слід чи це ... cat > foo_3бути ... cat >>foo_3?
алк

1
Якщо ви вирішили полегшити біль за допомогою утиліти. rarі 7zipчасто використовуються для того, щоб зробити такі розщеплення простіше зібрати крос-платформу
інфіксований

4

Ви також можете це зробити за допомогою диспетчера архівів, якщо ви віддаєте перевагу графічний інтерфейс. Подивіться у розділі "Зберегти-> Інші параметри-> Розділити на томи".


5
Я позначив це "командний рядок", але дякую за відповідь :)
Стефан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.