[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как нарезать большой файл на несколько маленьких
Diakon
Добрый день.
Вот есть например большой файл, скажем 400Мб. Подскажите как его нарезать на несколько маленьких размером 50Мб?
Есть такой скрипт, но он делит на паловину, а как делить именно по нужному мне кол-ву Мб?

while ($line = fgets($h)){
$counter++;
}

$half = ceil($counter/2);

rewind($h);
$file1 = fopen('/uploads/import/tmp/file1.csv', 'w+');
$i = 1;
while ($i <= $half){
$line = fgets($h);
fwrite($file1, $line);
$i++;
}
$file2 = fopen('/uploads/import/tmp/file2.csv', 'w+');
while ($line = fgets($h)){
fwrite($file2, $line);
}


Заранее спасибо всем, кто поможет!
johniek_comp
через exec. почитац про команду split в linux

_____________
user posted image
AllesKlar
Можно распечатать, потом разрезать на 8 частей, протом каждую часть отсканировать и распознать.
Должно получиться по 50 мб.

_____________
[продано копирайтерам]
spooki
как вариант
<?php 
$lines = file("kursovik_all.txt"); // изначальный большой

$fc = 1;

$lc = 400; // по сколько строк в файле

$fp = fopen("kursovik1.txt", "a");

for ($i=0; $i<count($lines); $i++)
{
fwrite($fp, $lines[$i]);
if ($i/$lc==floor($i/$lc) and $i!=0)
{
fclose($fp);
$fc += 1;
$fp = fopen("kursovik".$fc.".txt", "a");
}
}

fclose($fp);
?>


выводит как kursovik1.txt kursovik2.txt kursovik3.txt...

_____________
XMLSEO сервис купли-продажи Яндекс.XML лимитов и туннелирования Yandex и Google выдачи
sergeiss
Если тебе это надо сделать под ПХП, то надо доработать твой же скрипт. А если надо просто нарезать, любыми средствами, то это можно сделать под Виндой с помощью батника (файла с командами и расширением BAT). Работает только для текстовых файлов, разбитых на строки!!!

Сохраняешь указанный ниже код в виде файла типа cut_file.bat.
Указываешь имя файла (3-я строка) и количество строк (4-я строка), сколько их должно быть в каждом файле. И запускаешь этот батник. Лучше из того каталога, где находится искомый файл.
@Echo Off
SetLocal enabledelayedexpansion
Set list=имя_файла_для_нарезки.log
:: Число строк в файле на выходе
Set str=50

Set Num=%str%& Set File=0
For /F "tokens=* usebackq delims=" %%i In ("%list%") Do (
Set /a Num+=1
If !Num! GEQ %str% (
Set Num=0
Set /a File+=1
Set nFile=00!File!
Set nFile=!nFile:~-3!
Echo %%i>list!nFile!.txt
) Else Echo %%i>>list!nFile!.txt
)
Pause


_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.