The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Чем объединить два файла из командной строки?"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"Чем объединить два файла из командной строки?"
Сообщение от zx Искать по авторуВ закладки on 20-Ноя-03, 10:20  (MSK)
Как объединить два файла в FreeBSD?
Имеем:
# ls -l
total 3146784
-rw-rw-r--  1 root  wheel  3221438976 20 ноя 12:29 f2
-rw-rw-r--  1 root  wheel       32256 11 фев  2003 f1

Надо f1 + f2 = f3. Причем чтобы содержимое f1 оказалось в начале файла f3.

Какой командой это делается?

Можно конечно cat f2.d >>f1.d, но это как-то долго, в f2 все таки как никак 3 гига будет. Да и месте на диске нет для второго 3-х гигового файла.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Чем объединить два файла из командной строки?"
Сообщение от tstalker Искать по авторуВ закладки on 20-Ноя-03, 11:16  (MSK)
>Можно конечно cat f2.d >>f1.d, но это как-то долго

Сам же и ответил на свой вопрос. Это стандартный прием конкатенации файлов.
А что долго - так не думаю, что под форточками будет быстрее...

> Да и месте на диске нет для второго 3-х гигового файла.

Однозначно будет создан результирующий файл с размером f1+f2.
И соответственное дисковое пространство под него потребуется.
Такова се ля ви... :)

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Чем объединить два файла из командной строки?"
Сообщение от zx Искать по авторуВ закладки on 20-Ноя-03, 11:46  (MSK)
>>Можно конечно cat f2.d >>f1.d, но это как-то долго
>
>Сам же и ответил на свой вопрос. Это стандартный прием конкатенации файлов.
>
>А что долго - так не думаю, что под форточками будет быстрее...
>
>
>> Да и месте на диске нет для второго 3-х гигового файла.
>
>Однозначно будет создан результирующий файл с размером f1+f2.
>И соответственное дисковое пространство под него потребуется.
>Такова се ля ви... :)

Жопа блин какая-то получается. Придется значит винт дополнительный искать. :( Не ужели нет способа выкрутится в моем случае?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Чем объединить два файла из командной строки?"
Сообщение от lavr emailИскать по авторуВ закладки on 20-Ноя-03, 12:09  (MSK)
>Как объединить два файла в FreeBSD?
>Имеем:
># ls -l
>total 3146784
>-rw-rw-r--  1 root  wheel  3221438976 20 ноя 12:29 f2
>
>-rw-rw-r--  1 root  wheel      
>32256 11 фев  2003 f1
>
>Надо f1 + f2 = f3. Причем чтобы содержимое f1 оказалось в
>начале файла f3.
>
>Какой командой это делается?
>
>Можно конечно cat f2.d >>f1.d, но это как-то долго, в f2 все таки как никак 3 гига будет. Да и месте на диске нет для второго 3-х гигового файла.

программка на си или perl - открывает большой файл f2 и дописывает
в начало f1, по заверщении удаляет f1 и переименовывает (если нужно f2)

ну детское задание.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Чем объединить два файла из командной строки?"
Сообщение от lavr emailИскать по авторуВ закладки on 20-Ноя-03, 12:10  (MSK)
>>Как объединить два файла в FreeBSD?
>>Имеем:
>># ls -l
>>total 3146784
>>-rw-rw-r--  1 root  wheel  3221438976 20 ноя 12:29 f2
>>
>>-rw-rw-r--  1 root  wheel      
>>32256 11 фев  2003 f1
>>
>>Надо f1 + f2 = f3. Причем чтобы содержимое f1 оказалось в
>>начале файла f3.
>>
>>Какой командой это делается?
>>
>>Можно конечно cat f2.d >>f1.d, но это как-то долго, в f2 все таки как никак 3 гига будет. Да и месте на диске нет для второго 3-х гигового файла.
>
>программка на си или perl - открывает большой файл f2 и дописывает
>
>в начало f1, по заверщении удаляет f1 и переименовывает (если нужно f2)
>
>
>ну детское задание.

прим: судя по размеру f1 - его вообще сразу можно в память прочитать и
удалить, потом дописать в начало f2.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Чем объединить два файла из командной строки?"
Сообщение от zx Искать по авторуВ закладки on 20-Ноя-03, 12:21  (MSK)
>>>Как объединить два файла в FreeBSD?
>>>Имеем:
>>># ls -l
>>>total 3146784
>>>-rw-rw-r--  1 root  wheel  3221438976 20 ноя 12:29 f2
>>>
>>>-rw-rw-r--  1 root  wheel      
>>>32256 11 фев  2003 f1
>>>
>>>Надо f1 + f2 = f3. Причем чтобы содержимое f1 оказалось в
>>>начале файла f3.
>>>
>>>Какой командой это делается?
>>>
>>>Можно конечно cat f2.d >>f1.d, но это как-то долго, в f2 все таки как никак 3 гига будет. Да и месте на диске нет для второго 3-х гигового файла.
>>
>>программка на си или perl - открывает большой файл f2 и дописывает
>>
>>в начало f1, по заверщении удаляет f1 и переименовывает (если нужно f2)
>>
>>
>>ну детское задание.
>
>прим: судя по размеру f1 - его вообще сразу можно в память
>прочитать и
>удалить, потом дописать в начало f2.

Если не секрет, то чем дописывают в начало файла?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Чем объединить два файла из командной строки?"
Сообщение от lavr emailИскать по авторуВ закладки on 20-Ноя-03, 12:43  (MSK)
>>>>Как объединить два файла в FreeBSD?
>>>>Имеем:
>>>># ls -l
>>>>total 3146784
>>>>-rw-rw-r--  1 root  wheel  3221438976 20 ноя 12:29 f2
>>>>
>>>>-rw-rw-r--  1 root  wheel      
>>>>32256 11 фев  2003 f1
>>>>
>>>>Надо f1 + f2 = f3. Причем чтобы содержимое f1 оказалось в
>>>>начале файла f3.
>>>>
>>>>Какой командой это делается?
>>>>
>>>>Можно конечно cat f2.d >>f1.d, но это как-то долго, в f2 все таки как никак 3 гига будет. Да и месте на диске нет для второго 3-х гигового файла.
>>>
>>>программка на си или perl - открывает большой файл f2 и дописывает
>>>
>>>в начало f1, по заверщении удаляет f1 и переименовывает (если нужно f2)
>>>
>>>
>>>ну детское задание.
>>
>>прим: судя по размеру f1 - его вообще сразу можно в память
>>прочитать и
>>удалить, потом дописать в начало f2.
>
>Если не секрет, то чем дописывают в начало файла?

man open/close read/write seek/lseek printf/putc (CC)

  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "Чем объединить два файла из командной строки?"
Сообщение от zx Искать по авторуВ закладки on 20-Ноя-03, 12:47  (MSK)
>>>>>Как объединить два файла в FreeBSD?
>>>>>Имеем:
>>>>># ls -l
>>>>>total 3146784
>>>>>-rw-rw-r--  1 root  wheel  3221438976 20 ноя 12:29 f2
>>>>>
>>>>>-rw-rw-r--  1 root  wheel      
>>>>>32256 11 фев  2003 f1
>>>>>
>>>>>Надо f1 + f2 = f3. Причем чтобы содержимое f1 оказалось в
>>>>>начале файла f3.
>>>>>
>>>>>Какой командой это делается?
>>>>>
>>>>>Можно конечно cat f2.d >>f1.d, но это как-то долго, в f2 все таки как никак 3 гига будет. Да и месте на диске нет для второго 3-х гигового файла.
>>>>
>>>>программка на си или perl - открывает большой файл f2 и дописывает
>>>>
>>>>в начало f1, по заверщении удаляет f1 и переименовывает (если нужно f2)
>>>>
>>>>
>>>>ну детское задание.
>>>
>>>прим: судя по размеру f1 - его вообще сразу можно в память
>>>прочитать и
>>>удалить, потом дописать в начало f2.
>>
>>Если не секрет, то чем дописывают в начало файла?
>
>man open/close read/write seek/lseek printf/putc (CC)

Эххх... Выходит без сей и перлов никак. :(
Странно что нет таких вещей в базовой системе, вроде нужная вещь дописывать в начало в файла.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "Чем объединить два файла из командной строки?"
Сообщение от Antonio emailИскать по авторуВ закладки on 20-Ноя-03, 13:51  (MSK)
>>Если не секрет, то чем дописывают в начало файла?
>
>man open/close read/write seek/lseek printf/putc (CC)

Тупо и в лоб (ведь write и fwrite не умеют требуемый нам "insert mode", а занимать много дополнительного места на диске по условию нельзя):

От конца большого файла к началу бежит "окошко" размером с маленький файл, которое переписывает данные "из себя" за свою правую границу. При первом применении оно пишет за правый край файла, увеличив его на размер маленького. Таким образом, дойдя до начала файла, мы "освободим" в начале нужное число байт. И впишем туда содержимое маленького.

Скорость алгоритма безобразно медленная (ведь фактически имеем произвольный доступ).

Давно не брал я в руки компилятор... Может, можно изящнее?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "Чем объединить два файла из командной строки?"
Сообщение от qq Искать по авторуВ закладки on 20-Ноя-03, 15:21  (MSK)
>Как объединить два файла в FreeBSD?
>Имеем:
># ls -l
>total 3146784
>-rw-rw-r--  1 root  wheel  3221438976 20 ноя 12:29 f2
>
>-rw-rw-r--  1 root  wheel      
>32256 11 фев  2003 f1
>
>Надо f1 + f2 = f3. Причем чтобы содержимое f1 оказалось в
>начале файла f3.
>
>Какой командой это делается?
>
>Можно конечно cat f2.d >>f1.d, но это как-то долго, в f2 все таки как никак 3 гига будет. Да и месте на диске нет для второго 3-х гигового файла.

а может можно обойтись без слияния файлов?
например использовать
cat f1 f2|some_comand
или netcat с опцией -e и получить данные через сокет?

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру