使用 Pandoc bash 将目录和子目录(递归?)中的所有 .docx 转换为 .md

问题描述 投票:0回答:2

我希望 Pandoc 将目录中的所有 .docx 文件转换为 .md。

这个目录有很多子目录,还有子子目录等

我希望输出 .md 文件与转换后的 .docx 文件位于同一目录(以及子子目录等)中。

我尝试过很多变体的这个

find ./ -iname "*.docx" -type f -exec sh -c 'pandoc "${0}" -o "./output/$(basename ${0%.docx}.md)"' {} \;

我知道命令的“./output/”部分指定将转换后的文件放入名为“output”的目录中

当我从命令中删除“./output/”时,输出的 .md 文件全部放置在运行命令的顶级目录中。我希望这些输出文件“保留”在其 .docx 文件所在的目录中。

我正在使用带有 Cygwin 的 Windows 8。如果答案需要代码(makefile?),我希望语言是 Lisp(显然,我不是程序员)。

我该怎么做?

bash pandoc
2个回答
4
投票

基于:在 Mac 上使用 pandoc 将文件夹中的所有文件转换为 md

我认为应该是:

find ./ -iname "*.docx" -type f -exec sh -c 'pandoc "${0}" -o "${0%.docx}.md"' {} \;

0
投票

如果你想递归地保持目录结构:

target_dir="/path/containing/your/docx/files"
destination_dir="/output/path/for/your/md/files"

find "$target_dir" -type f -name '*.docx' -exec sh -c 'outdir="$2"; relpath="${3#$1/}"; mkdir -p "$outdir/$(dirname "$relpath")"; outname=$outdir/${relpath%.docx}.md; pandoc "$3" -o "$outname"  && echo "Converted $3 to $outname"' _ "$target_dir" "$destination_dir" {} \;
© www.soinside.com 2019 - 2024. All rights reserved.