Я сохранил много документов как txt. Я хочу напечатать их вместе, поэтому сначала хочу, чтобы они были вместе в одном файле. В этом случае порядок не имеет значения.
Я хочу решение, которое не включает в себя ввод имен файлов, которые будут объединены, но тот, который просто объединяет все txt-файлы в папке.
Могу ли я это сделать с помощью команда или какой-то GUI?
Я посмотрел здесь. Не знаю, как использовать join.
Простой способ сделать это с помощью cat:
cat file1 file2 > joined_file
Если вы просто выпустите cat file1 file2, вы увидите оба файла на стандартном выходе. Используя >, вы просто перенаправляете стандартный вывод в файл. Это будет работать и с другими командами.
Сделайте это с помощью простого цикла:
for i in *.txt; do cat "$i" >> complete.txt; done
>> присоединяется к файлу.
Примечание. Если по какой-то причине вам нужно снова запустить команду, вы нужно удалить complete.txt, иначе вы напишете файл самому себе, который не работает.
Если файлы, которые вы хотите объединить, все закончите в .txt, сохраните его просто:
cat *.txt > combined.txt
Если каталог содержит только текстовые файлы, это также просто:
cat * > combined.txt
(Обратите внимание, что как только вы создадите combined.txt, повторное включение будет включать его в расширение *, что приведет к нечетному поведению).
Если вы хотите выбрать некоторые файлы в каталоге а не другие, лучше всего, если имена файлов позволят вам отличить те, которые вы хотите. Если нет, вы можете полюбить find. Но я сомневаюсь, что вам нужно зайти так далеко.
Пользовательский скрипт 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"
Это дополнение и вариация к другим ответам, связанным с тем, чтобы эти решения работали в действиях пользователя Thunar.
Не все из них можно использовать таким образом, но некоторые из них.
Я думал, что наиболее интересным было бы слияние выбранных файлов из контекстного меню Thunar.
Это вариант, предложенный Сади в комментарии к ответу gertvdijk:
cat %N > JoinedFile
Присоединены только выбранные файлы. Ограничение условий внешнего вида для текстовых файлов.
Особая благодарность Сади [ ! d5], чей комментарий предоставил мне самое ясное и актуальное решение моей проблемы.
Я принял gertvdijk's gertvdijk как окончательный. Мало того, что это был случай с комментарием Сади, но, похоже, он имеет большую ценность для других, обеспечивая достаточно аргументированное и полное решение (хотя и несколько выше моих навыков чтения CLI).
Вы также можете попробовать 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.
Вы также можете использовать онлайн-утилиту, такую как merge-files-online.com