Ich möchte eine Handvoll Textdateien kombinieren, aber mit Titeln (EDIT: Dateinamen). Idealerweise so etwas wie
* a filename
contents of file
...
* another filename
contents of file
...
etc...
Ich verwende Windows (nicht DOS), habe aber Zugriff auf Powershell, Pandoc, Emacs, Cygwin oder alles andere, was Sie empfehlen. (Ich bin offensichtlich ein Neuling, der den Org-Modus ausprobiert.)
Ich kann sie alle problemlos in einem Ordner ablegen. Aber ich möchte es vermeiden, den Namen jeder Datei einzugeben. Wenn eine Bat-Datei empfohlen wird, habe ich noch nie eine verwendet, bin aber bereit, es zu lernen.
Antwort1
Ich bin sicher, dass es etwas Clevereres gibt, aber hier ist ein Powershell-Skript, das alle Dateien kombiniert:
$files = (dir *.txt)
$outfile = "out.txt"
$files | %{
$_.FullName | Add-Content $outfile
Get-Content $_.FullName | Add-Content $outfile
}
Ist es effizient? Nicht besonders … aber zur Not funktioniert es.
Antwort2
Inspiriert von der Struktur von Mitchs Skript habe ich eine Version für Unix-basierte Umgebungen wie GNU/Linux und OS X geschrieben:
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
(Wenn Sie nicht installieren möchten pandoc
, entfernen Sie einfach das Pipe-Zeichen und den Befehl | pandoc -t org
.)
Dieses Skript findet alle Dateien im aktuellen Verzeichnis und seinen Unterverzeichnissen, die die beschriebenen Dateierweiterungen ( .docx
usw.) haben.
Wenn die Liste beispielsweise fileA.text
und fileB.rtf
im Unterverzeichnis enthält subd/
, targetfile.org
erhalten Sie Zeilen wie:
* ./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>
Ich denke, dies hinterlässt target-file.org
einen ziemlich guten Zustand für Verbesserungen innerhalb von Emacs, ohne dass das Skript zu kompliziert wird. (Besonders, wenn Sie den pandoc
Schritt einschließen.)