此 RMD 文件生成一个 markdown/HTML 文档,列出一些元数据和所有指定文件的内容:
---
title: "Collection of SQL files"
author: "SQLCollectR"
date: "`r format(Sys.time(), '%Y-%m-%d')`"
output:
html_document:
keep_md: yes
---
```{r setup, echo = FALSE}
library(knitr)
path <- "files/"
extension <- "sql"
```
This document contains the code from all files with extension ``r extension`` in ``r paste0(getwd(), "/", path)``.
```{r, results = "asis", echo = FALSE}
fileNames <- list.files(path, pattern = sprintf(".*%s$", extension))
fileInfos <- file.info(paste0(path, fileNames))
for (fileName in fileNames) {
filePath <- paste0(path, fileName)
cat(sprintf("## File `%s` \n\n### Meta data \n\n", fileName))
cat(sprintf(
"| size (KB) | mode | modified |\n|---|---|---|\n %s | %s | %s\n\n",
round(fileInfos[filePath, "size"]/1024, 2),
fileInfos[filePath, "mode"],
fileInfos[filePath, "mtime"]))
cat(sprintf("### Content\n\n```\n%s\n```\n\n", paste(readLines(filePath), collapse = "\n")))
}
```
所有的工作都在for
循环遍历所有文件path
其名字结尾为extension
。对于每个文件,都会打印一个包含“元数据”的表格,然后是实际的文件内容。使用检索元数据file.info
并由文件大小、模式和最后修改时间戳组成。
The cat(sprintf(...
包含 markdown 的构造使代码看起来很复杂,但事实上它相当简单。
样本输出
使用带有 SQL 语句的 SQL 文件这个答案,上面的 RMD 文件生成以下输出(使用 HTML 作为输出格式):