Сбой при копировании файла размером> 4 ГБ в exfat: «Ошибка закрытия файла: на устройстве не осталось места»

Алгоритм поиска во всем файле 2 каждой строки в файле 1 имеет временную производительность m * n. где m - количество строк файла 2, а n - количество строк файла 1. Это быстро становится очень медленным.
Решение состоит в том, чтобы сначала отсортировать каждый файл (это n*log(n) времени), а затем сравнить строки между двумя файлами следующим образом:

  1. Пусть i=1 (номер строки файла 1) и j=1 (номер строки файла 2).
  2. Сравните a=(файл 1)[строка i] с b=(файл 2)[строка j].
  3. if a then increment i, return to 2 (проверка на конец файла 1).
  4. if a>b; then increment j, return to 2 (проверка конца файла 2).
  5. if a=b; это совпадение, печатаем его, инкрементируем i.

Время выполнения всего: n + m (время чтения всех строк).

Весь процесс, таким образом, имеет время выполнения: n*log(n) + m*log(m) + n + m.
Что имеет O(n) от: n * log(n) для n > m.

Сортировку легко сделать, просто используйте команду sort для каждого файла:

sort -t '|' -k 1 file01.csv > file01-sorted.csv

Затем выполните приведенную выше процедуру в awk.

Редактирование: Меня только что осенило, что если все 10k номеров SPLNO уникальны (без повторений). И MDN.TXT также имеет уникальные записи. Тогда конкатенация обоих файлов и поиск повторяющихся значений также даст вам решение. Это работает для простого равенства. Регексные совпадения нарушат эту идею в большинстве случаев.

2
17.09.2018, 07:57
1 ответ

Я только начал запускать Fedora 28 Live на дешевом новом ноутбуке. Я перешел к ddсвоему исходному диску, чтобы, если захочу, запустить свою лицензию Windows 10 Home.

Я отформатировал USB-накопитель емкостью 32 ГБ как exFAT , но он не записывал файл размером более 4 ГБ.

ВРЕМЕННОЕ РЕШЕНИЕ:

Я вытащил внешний HD, отформатированный как exFAT . Мне удалось написать там большой файл. Попробуйте отформатировать накопитель или USB-накопитель как exFAT с помощью Windows. Затем попробуйте написать большой файл с помощью Linux.

0
27.01.2020, 22:33

Теги

Похожие вопросы