将多个文本文件 + 文件名 合并为一个文本文件

将多个文本文件 + 文件名 合并为一个文本文件

我想合并一些文本文件,但要有标题(编辑:文件名)。理想情况下,类似

* a filename 
contents of file
... 
* another filename 
contents of file 
... 

etc... 

我在 Windows 上(不是 DOS),但可以访问 powershell、pandoc、emacs、cygwin 或您推荐的任何其他程序。(显然我是尝试 org-mode 的新手。)

我可以轻松地将它们全部放在一个文件夹中。但我想避免输入每个文件的名称。如果建议使用 bat 文件,我从未使用过,但愿意学习。

答案1

我确信还有更聪明的方法,但这里有一个将合并所有文件的 powershell 脚本:

$files = (dir *.txt)
$outfile = "out.txt"

$files | %{
    $_.FullName | Add-Content $outfile
    Get-Content $_.FullName | Add-Content $outfile
}

它有效率吗? 不是太好……但在紧急情况下还是有用的。

答案2

受到 Mitch 脚本结构的启发,我编写了一个针对基于 Unix 环境(例如 GNU/Linux 和 OS X)的版本:

find -regex '.*\.\(docx?\|org\|rtf\|te?xt\)$' | while read file
do
    echo "* $file" >> target-file.org
    cat "$file" | pandoc -t org >> target-file.org
done

(如果您不想安装pandoc,只需删除管道和命令| pandoc -t org。)

该脚本将查找当前目录及其子目录中所有具有所述文件扩展名的文件(.docx,等等)。

例如,如果列表包含fileA.text并且fileB.rtf位于子目录中subd/targetfile.org将收到如下行:

* ./subd/fileA.text
<fileA's contents converted to an org file by pandoc>
* ./subd/fileB.rtf
<fileB's contents converted to an org file by pandoc>

我认为这将为target-file.orgEmacs 内部的改进留下一个相当好的状态,而脚本不会太复杂。(特别是如果你包括这个pandoc步骤。)

相关内容