Как присоединиться к текстовым файлам?

Я сохранил много документов как txt. Я хочу напечатать их вместе, поэтому сначала хочу, чтобы они были вместе в одном файле. В этом случае порядок не имеет значения.

Я хочу решение, которое не включает в себя ввод имен файлов, которые будут объединены, но тот, который просто объединяет все txt-файлы в папке.

Могу ли я это сделать с помощью команда или какой-то GUI?

Я посмотрел здесь. Не знаю, как использовать join.

1
задан 26 July 2017 в 12:14

7 ответов

Простой способ сделать это с помощью cat:

cat file1 file2 > joined_file

Если вы просто выпустите cat file1 file2, вы увидите оба файла на стандартном выходе. Используя >, вы просто перенаправляете стандартный вывод в файл. Это будет работать и с другими командами.

12
ответ дан 25 May 2018 в 01:51
  • 1
    Пожалуйста, прочитайте вопрос. Вы говорите, чтобы указать отдельные имена файлов, которые OP специально не хотел делать! – Sri 6 February 2013 в 09:48
  • 2
    Это было не в исходном вопросе. Я не обновил свой ответ, так как появились более полные ответы. – Jorge Suárez de Lis 6 February 2013 в 14:37
  • 3
    @ JorgeSuárezdeLis Хотя этот ответ напрямую не помогает ОП с его / ее вопросом, пожалуйста, обратите внимание, что этот ответ, вероятно, поможет кому-то другому, у которого есть только несколько файлов, которые они хотели бы объединить. (ах эй, как и я! спасибо! ^ - ^) +1 – Souta 8 February 2013 в 04:54
  • 4
    @ JorgeSuárezdeLis Действительно. Вы отлично ответили revision 2 вопроса. Несколько минут спустя версия 3 изменила требования к ответам. – gertvdijk 8 February 2013 в 06:04

Сделайте это с помощью простого цикла:

for i in *.txt; do cat "$i" >> complete.txt; done

>> присоединяется к файлу.

Примечание. Если по какой-то причине вам нужно снова запустить команду, вы нужно удалить complete.txt, иначе вы напишете файл самому себе, который не работает.

5
ответ дан 25 May 2018 в 01:51

Если файлы, которые вы хотите объединить, все закончите в .txt, сохраните его просто:

cat *.txt > combined.txt

Если каталог содержит только текстовые файлы, это также просто:

cat * > combined.txt

(Обратите внимание, что как только вы создадите combined.txt, повторное включение будет включать его в расширение *, что приведет к нечетному поведению).

Если вы хотите выбрать некоторые файлы в каталоге а не другие, лучше всего, если имена файлов позволят вам отличить те, которые вы хотите. Если нет, вы можете полюбить find. Но я сомневаюсь, что вам нужно зайти так далеко.

4
ответ дан 25 May 2018 в 01:51
  • 1
    Thnx. если вы посмотрите на комментарии к принятому ответу, Сади предложил именно это в комментарии. если бы ваш ответ был первым, ваш был бы тем, что мне нужно. взгляните на мою тоже: добавьте, что в пользовательском меню – cipricus 3 February 2013 в 04:04
  • 2
    Спасибо за ответ. Да, я вижу это сейчас, это было немного неясным ... – alexis 3 February 2013 в 06:18

Пользовательский скрипт Thunar, написанный cipricus, также вдохновил меня написать аналогичный сценарий Nautilus, и я подумал, что это может быть полезно для других, которые смотрят на этот Q & amp; A для справки по этому вопросу. Итак, вот он:

#!/bin/sh
#Nautilus Script to join selected text files in a single file and open the joined file with default text editor
#
IFS=$'\n'
FILENAME="JoinedFile_$(date +%Y-%m-%d-%H-%M-%S).txt"
cat "$@" > "$FILENAME"
xdg-open "$FILENAME"
4
ответ дан 25 May 2018 в 01:51
  • 1
    @David Foerster Спасибо за редактирование. У меня не было проблем со старой версией (с моими ограниченными тестовыми случаями), и я не вижу никаких проблем с этой улучшенной версией. Извините, если я причинил неудобства из-за недостатка предыдущей версии. – Sadi 21 August 2015 в 15:27
  • 2
    Это не было ошибкой, но в нем содержался ненужный цикл, который делал код более трудным для понимания, imho. – David Foerster 22 August 2015 в 01:56

Это дополнение и вариация к другим ответам, связанным с тем, чтобы эти решения работали в действиях пользователя Thunar.

Не все из них можно использовать таким образом, но некоторые из них.

Я думал, что наиболее интересным было бы слияние выбранных файлов из контекстного меню Thunar.

Это вариант, предложенный Сади в комментарии к ответу gertvdijk:

   cat %N > JoinedFile

Присоединены только выбранные файлы. Ограничение условий внешнего вида для текстовых файлов.

enter image description here

Особая благодарность Сади [ ! d5], чей комментарий предоставил мне самое ясное и актуальное решение моей проблемы.

Я принял gertvdijk's gertvdijk как окончательный. Мало того, что это был случай с комментарием Сади, но, похоже, он имеет большую ценность для других, обеспечивая достаточно аргументированное и полное решение (хотя и несколько выше моих навыков чтения CLI).

2
ответ дан 25 May 2018 в 01:51

Вы также можете попробовать find,

find . -name "*.txt" -type f -exec cat {} + > file

Он находит файлы .txt в текущем каталоге и выполняет команду cat для каждого созданного файла. Наконец, весь вывод был перенаправлен на имя файла file (созданный непосредственно внутри самого тока).

Объяснение:

.                  # current directory

-name              # helps to find only .txt files.

-type f            # Only files

-exec cat {} +     # helps to run cat command on the founded .txt files.

>                  # Output redirection operator

file               # to store final output.
2
ответ дан 25 May 2018 в 01:51

Вы также можете использовать онлайн-утилиту, такую ​​как merge-files-online.com

-2
ответ дан 25 May 2018 в 01:51

Другие вопросы по тегам:

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