combinar vários arquivos de texto, _+ nomes de arquivos_, em um único arquivo de texto

combinar vários arquivos de texto, _+ nomes de arquivos_, em um único arquivo de texto

Gostaria de combinar alguns arquivos de texto, mas com títulos (EDIT: nomes de arquivos). Idealmente, algo como

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

etc... 

Estou no Windows (não no DOS), mas tenho acesso ao PowerShell, pandoc, emacs, cygwin ou qualquer outra coisa que você recomende. (Claramente sou um novato experimentando o modo organizacional.)

Posso facilmente colocá-los todos em uma pasta. Mas gostaria de evitar digitar o nome de cada arquivo. Se um arquivo bat for recomendado, nunca usei um, mas estou disposto a aprender.

Responder1

Tenho certeza de que há algo mais inteligente, mas aqui está um script do PowerShell que combinará todos os arquivos:

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

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

É eficiente? Não muito... mas funcionará em apuros.

Responder2

Inspirado na estrutura do script de Mitch, escrevi uma versão para ambientes baseados em Unix, como GNU/Linux e 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

(Se você não quiser instalar pandoc, simplesmente remova o pipe e comande, | pandoc -t org.)

Este script encontrará todos os arquivos no diretório atual e seus subdiretórios que possuem extensões de arquivo conforme descrito ( .docx, etc).

Por exemplo, se a lista incluir fileA.texte fileB.rtfno subdiretório subd/, targetfile.orgreceberá linhas como:

* ./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>

Eu acho que isso vai deixar você target-file.orgem um estado muito bom para melhorar dentro do Emacs, sem que o script seja muito complicado. (Especialmente se você incluir a pandocetapa.)

informação relacionada