【问题标题】:zsh expansion to create file name based on the directory namezsh 扩展根据目录名创建文件名
【发布时间】:2015-03-30 13:17:53
【问题描述】:

我正在尝试使用 pandoc 将目录中的所有 .markdown 文件编译成一个 pdf,其中 pdf 的名称是目录名称加上一个空格和notes.pdf。如果我硬编码pdf名称,我可以将所有markdown文件编译成一个pdf,但是当我尝试生成pdf名称时,它会失败。

例如,如果我在一个文件路径名为path/to/markdown files 的目录中,我想编译成一个名为markdown files notes.pdf 的pdf。

我尝试了以下方法:

pandoc *.markdown -o $PWD notes.pdf

错误 - “Pandoc 可以转换为 PDF,但不能从 PDF。”

pandoc *.markdown -o ${PWD notes.pdf}

错误 - “错误替换”

pandoc *.markdown -o '$PWD notes.pdf'

生成一个名为 $PWD(:t) notes.pdf 的 pdf

pandoc *.markdown -o $PWD" notes.pdf"

错误 = “未找到匹配项”

有人知道我怎样才能让它工作吗?

非常感谢

【问题讨论】:

  • 我不确定我是否理解您的问题。你的意思是例如如果当前工作目录是/home/pdoak/projects/wibble,那么你希望输出文件名是wibblenotes.pdf
  • 是的,但在您的示例中,我希望在 wibble 和“notes.pdf”之间留一个空格,以便文件名是“wibble notes.pdf”

标签: shell zsh


【解决方案1】:

$PWD:t 扩展为当前目录的基本名称。这需要不加引号或双引号,而不是单引号,因为单引号防止扩展。空格也需要加引号,因为它是文件名的一部分。

pandoc -o "$PWD:t notes.pdf" *.markdown

请注意,这使用 zsh 语法。如果您需要在普通 sh 中使用它(例如,对于 makefile),您可以使用

pandoc -o "${PWD##*/} notes.pdf" *.markdown

(在 makefile 中,将 $ 加倍。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    相关资源
    最近更新 更多