22 filemanager
我已经将许多文档保存为 txt。我想把它们打印在一起,所以首先我想把它们放在一个文件中。在这种情况下,顺序无关紧要。
我想要一个解决方案,它不涉及输入要合并的文件的名称,而是一个只合并文件夹中所有 txt 文件的解决方案。
我可以用命令或一些 GUI 来做吗?
我看这里。不知道怎么用join。
ger*_*ijk 43
cat与输出重定向一起使用。语法:cat file [file] [[file] ...] > joined-file.
只有两个文件的示例(您可以有更多):
$ echo "some text in a file" > file1
$ echo "another file with some text" > file2
$ cat file1 file2 > mergedfiles
$ cat mergedfiles
some text in a file
another file with some text
Run Code Online (Sandbox Code Playgroud)
如果您有“许多文档”,请使用 shell globbing(模式):
cat input-files-dir/* > joined-file
Run Code Online (Sandbox Code Playgroud)
这将将该目录中的所有文件加入当前目录(防止它与输出文件本身匹配)。它完全独立于使用cat和输出重定向——它只是 Bash 将所有文件作为cat.
它只会像使用纸和胶带一样将文件粘合(连接)在一起。它不关心能够处理此问题的实际文件格式。它适用于文本文件,但不适用于 PDF、ODT 等。好吧,它会将它们粘合在一起,但它不再是有效的 PDF/ODT。
正如phoibos 指出的那样,shell globbing 将导致文件名的字母顺序。这就是 Bash 和 shell globbing 的工作原理。
input file is output file错误的附录当输入文件的模式与输出的文件完全相同时,这将导致错误。这是一个安全功能。示例:cat *.txt > out.txt第二次运行会导致这种情况。
你能做些什么:
*.txt与输出文件output.out不会发生冲突。input-files-dir目录来放置所有文件,并输出到当前工作目录。这使得不可能得到这个错误。Jor*_*Lis 12
一个简单的方法是使用 cat:
cat file1 file2 > joined_file
Run Code Online (Sandbox Code Playgroud)
如果你只是发出cat file1 file2你会在标准输出中看到这两个文件。通过使用>,您只是将标准输出重定向到一个文件。这也适用于其他命令。
用一个简单的循环来做:
for i in *.txt; do cat "$i" >> complete.txt; done
Run Code Online (Sandbox Code Playgroud)
>> 附加到文件中。
注意:如果由于某种原因您必须再次运行该命令,则必须删除complete.txt,否则您会将文件写入自身,这是行不通的。