Я хотел бы объединить несколько текстовых файлов, но с заголовками (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
шаг.)