У меня есть 14 файлов, которые являются частью одного текста. Я хотел бы объединить их в один. Как это сделать?
files
text-processing
Иван
источник
источник
*
в «естественном» порядке. Если у вас есть «file1.txt ... file9.txt ... file14.txt», он не будет работать, потому что file1? .Txt будет сортировать между file1.txt и file2.txt. Вам придется переименовать их в «file01.txt ... file09.txt ... file14.txt». Скажи,echo *
если ты не уверен.numeric_glob_sort
опцию).Если ваши файлы не находятся в одном каталоге, вы можете использовать команду find до объединения:
Очень полезно, когда ваши файлы уже упорядочены, и вы хотите объединить их, чтобы проанализировать их.
Более переносимо:
Это может или не может сохранить порядок файлов.
источник
"*.csv"
, так как оболочка будет затем передать литерал*
вfind
.Команда
фактически имеет нежелательный побочный эффект включения 'объединенного-файла' в конкатенацию, создавая файл-разборщик. Чтобы обойти это, либо напишите объединенный файл в другой каталог;
или используйте сопоставление с образцом, которое будет игнорировать объединенный файл;
источник
cat * > merged-file
работает отлично. Глобы обрабатываются до создания файла. Если онmerged-file
уже существует,cat
(по крайней мере , мой) определит, что это выходной файл, и откажется его читать. Если файл уже существует, и у вас есть перенаправление позже в конвейере, то он, очевидно, не может этого сделать, так что тогда и только тогда вы получите файл побега.cat
не может определить, является ли файл выходным. Перенаправление происходит в оболочке;cat
только печатает на стандартный вывод.Как и другие здесь говорят ... Вы можете использовать
cat
Допустим, у вас есть:
И вы только хотите ,
file01
чтобыfile03
иfileA
кfileC
:Или, используя расширение скобки:
Или, используя причудливое расширение фигурных скобок:
Или вы можете использовать
for
цикл:источник
[01-03]
не будет работать в качестве шаблона сглаживания.Вы можете указать
pattern
файл, а затем объединить их все следующим образом:источник
Другой вариант - это sed:
Или же...
Или же...
Или без перенаправления ...
Обратите внимание, что в последней строке также пишется merge.txt (не wmerge.txt!). Вы можете использовать w "merge.txt", чтобы избежать путаницы с именем файла, и -n для вывода без вывода сообщений.
Конечно, вы также можете сократить список файлов с подстановочными знаками. Например, в случае нумерованных файлов, как в приведенных выше примерах, вы можете указать диапазон в фигурных скобках следующим образом:
источник