Intereting Posts
/etc/init.d/script или / etc / inittab – respawn on die Как выполнить двойную загрузку на машине с PGP WDE? Создание виртуального микрофона и выходного звука на него Почему SSH-вход работает в оболочке, но не работает во всех третьих лицах через ssh-туннель? Как проверить освобожденную выделенную память? Пустые страницы руководства после обновления до Kubuntu 18.04 wget на лету, чтобы извлечь определенную информацию из файла, не загружая весь файл Хотелось бы сменить каталог на результат, из которого функция Загрузочный NixOS ISO не работает (18.03.132847) Setcap не найден в Debian 9 Дифференцирование между запуском и получением источника в сценарии оболочки bash? csplit не выполняет обратную косую черту как возврат каретки Принудительное fsck во время загрузки корневой файловой системы (до установки файловых систем без однопользовательского режима) Ядро пользователя разбито на 64-битный Linux Как включить вкладку «Обработка страницы» в диалоговом окне печати в Arch Linux

Присоединение файлов на диске

Скажем, у меня есть несколько файлов со следующими именами:

000001 000002 000003 ... 

Каждый из этих файлов представляет собой файл csv (может содержать escape-символы). В общей сложности папка имеет ~20GB данных. Как я могу сшить эти файлы вместе в один окончательный файл?

В случае, если это имеет значение, я обычно использую Zsh .

 cat <->.csv > all.csv 

Где <-> соответствует любому положительному целочисленному десятичному числу, объединяет все те (в лексическом порядке, которые для 0 заполненных чисел совпадают с численным порядком) в all.csv .

Тем не менее, это удвоит пространство на диске. Если вы не собираетесь хранить исходные файлы, вы можете:

 for i in <->.csv; do cat $i && rm -f $i || break done > all.csv 

Если вы используете перенаправление, это будет либо добавлять, либо перезаписывать содержимое в один файл. Если вы хотите добавить к одному файлу, используйте:

cat file.csv file2.csv file3.csv >> all.csv

Эта следующая команда перезапишет all.csv:

cat file.csv file2.csv file3.csv > all.csv

Но скажите, что вы хотите переместить все CSV-файлы в один csv в определенном каталоге (для добавления):

cat *.csv >> all.csv

Почему вы хотите объединить все эти файлы в один файл?

  1. Если вы хотите отправить их программе, которая хочет stdin, вы можете сделать это:

     cat *.csv | prog 

    или любой из других методов комбинации, упомянутых ранее.

  2. Если программа ожидает ввода имени файла, выполните следующие действия:

     mkfifo p cat *.csv > p & prog p 
  3. Если вам нужен один файл, потому что один файл проще сделать резервную копию, то сбор всех вместе может быть полезным. Если вы хотите прочитать файлы без их разворачивания, вы можете превратить tar-файл в fs-fuse.