我希望 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(显然,我不是程序员)。
我该怎么做?
基于:在 Mac 上使用 pandoc 将文件夹中的所有文件转换为 md
我认为应该是:
find ./ -iname "*.docx" -type f -exec sh -c 'pandoc "${0}" -o "${0%.docx}.md"' {} \;
如果你想递归地保持目录结构:
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" {} \;