在 Bash 脚本中批量 rst2html 转换

在 Bash 脚本中批量 rst2html 转换

我的 Debian 系统上的多个文件夹和子文件夹中有多个 .rst 文件。

如何创建一个脚本,将所有 .rst 文件转换为 html(使用 rst2html 命令)并创建保留原始结构的新文件夹和子文件夹?

我尝试了这个,但是失败了:

#!/bin/bash

for i in $(find $directory -type f -name \*.rst)
do

rst2html "$i" "./html${i%.html}"

done

我已经创建了 html 文件夹,所以我只想将所有转换后的 .rst 放入具有相同树结构的文件夹中。

终端错误是:

Unable to open destination file for writing:
  OutputError: [Errno 2] No such file or directory: './html./gdalogr/nearblack.rst'

答案1

您应该对脚本进行以下更改:

  • 在调用“rst2html”之前创建缺失的目录
  • 更改目标路径以包含额外内容/,以允许源参数find以点开头。

以下是建议的解决方案:

#!/bin/bash

directory=$1

for i in $(find $directory -type f -name \*.rst)
do
    RST_FILE="$i"
    HTML_FILE="./html/${i%.html}"
    HTML_DIR=$(dirname ${HTML_FILE})
    mkdir -p ${HTML_DIR}
    rst2html "$i" "$HTML_FILE"
done

相关内容