【问题标题】:Find all HTML files in a set of folders, extract specific HTML content and save content to new files查找一组文件夹中的所有 HTML 文件,提取特定的 HTML 内容并将内容保存到新文件
【发布时间】:2019-10-08 15:54:22
【问题描述】:

我有一个包含数千个 HTML 文件的文件夹结构,我想使用 pandoc 清理并转换为 markdown,但保留现有结构(或镜像结构)。

我目前设法使用find 找到所有HTML 文件,使用cat 命令将该内容传递给pup,后者解析内容并查看<article> 标记并将内容传送到新的名为 article-content.txt 的文件。

我正在考虑分两个阶段处理内容。

  1. 从每个文件中提取文章标签并保存为新文件(或覆盖现有文件)。
  2. 然后用 pandoc 转换相同的结构。

我对 bash 的理解有限。我知道我可能需要遍历文件列表并将路径/文件名作为变量传递给新的文件结构。但不确定下一步该去哪里。

cat $(find . -type f -name "*.html") | pup 'article' > article-content.txt

【问题讨论】:

  • 这个问题太宽泛了。尝试将其归结为一个具体的问题,然后告诉我们
  • | cat | 什么都不做。
  • 我不确定我是否理解您的目标。对于每个 HTML 文件,您是否想要提取 <article> 标记的内容,然后将其转换为 markdown 并将其存储在新文件中?对于单个输入文件,您的流程会是什么样子?
  • 谢谢本杰明。你对我的理解是正确的。提取文章标签和内容,并根据其原始文件名以 md 扩展名保存一个新文件。

标签: bash pandoc pup


【解决方案1】:

如果您想分别对每个文件执行类似的操作,find 具有内置的 -exec-execdir 选项(请参阅man find):

find . -type f -name "*.html" -execdir bash -c "pup 'article' < {} > {}.md" \;

【讨论】:

  • 我在使用 parse error near ")" 时遇到了解析错误。我认为圆括号中缺少引号。添加它们后,它似乎可以运行,但对于每个文件都出现类似这样的错误:find: (pup 'article' &lt; character-count.aspx.html &gt; character-count.aspx.html.md): No such file or directory.
  • 是的,很抱歉。根据stackoverflow.com/questions/15030563/…,它需要用bash -c“包装”。我已经编辑了答案。
  • 感谢@jeff-y 工作。只需要对文件名进行一些清理,我就有第二个过程使用 pandoc 将 HTML 转换为 Markdown。
猜你喜欢
  • 1970-01-01
  • 2020-05-01
  • 2023-04-07
  • 1970-01-01
  • 2017-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多