объединить несколько текстовых файлов, _+ имена файлов_, в один текстовый файл

объединить несколько текстовых файлов, _+ имена файлов_, в один текстовый файл

Я хотел бы объединить несколько текстовых файлов, но с заголовками (EDIT: имена файлов). В идеале, что-то вроде

* 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

Вдохновленный структурой скрипта Митча, я написал версию для сред на базе 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.orgв довольно хорошем состоянии для улучшения в Emacs, не делая скрипт слишком сложным. (Особенно, если вы включите этот pandocшаг.)

Связанный контент