【问题标题】:Remove string of characters from filename using Applescript or Linux使用 Applescript 或 Linux 从文件名中删除字符串
【发布时间】:2013-12-16 19:52:11
【问题描述】:

我正在将几个 word 文档转换为 pdf。输入文件名是这样的“CM_Genetics_in_OBGYN_docx”,而输出文件名是这样的“job_10-Microsoft_Word_-_CM_Genetics_in_OBGYN_docx.pdf”我想删除“job_10-Microsoft_Word__”和“_docx”,只剩下pdf文件名“CM_Genetics_in_OBGYN.pdf”。我真的很想以“OBGYN.pdf 中的 CM 遗传学”结尾,但如果最后一部分太复杂,“CM_Genetics_in_OBGYN.pdf”是可以接受的。我对 applescript 和 linux 命令有一些经验,但无法确定这一点。

【问题讨论】:

    标签: linux pdf ms-word applescript filenames


    【解决方案1】:

    给你:

    for fn in job_*.pdf; do
        newname=${fn#job_??-*-_}
        newname=${newname/_docx}
        newname=${newname//_/ }
        echo "mv '$fn' '$newname'"
    done
    

    这将打印mv 准备执行的命令,但不会重命名任何内容。要执行重命名,只需将输出通过管道传输到 sh

    echo 可用于安全地测试所有内容。确保检查你能找到的最奇怪的模式来覆盖所有极端情况。如果一切看起来都不错,请更改 echo 以执行您想要执行的实际操作,例如:

    for fn in job_*.pdf; do
        newname=${fn#job_??-*-_}
        newname=${newname/_docx}
        newname=${newname//_/ }
        mv "$fn" "/some/other/dir/$newname"
    done
    

    【讨论】:

    • 这是我在终端中得到的结果 看起来像我想要的。非常感谢!此外,我正在尝试将其添加到 automator 的工作流程中,我将其设置为一次分配一个项目,我希望此步骤重命名项目并将其返回到与工作流程中取自相同的文件夹.究竟如何让它做到这一点。如果命令刚刚结束并且没有给出重定向,则文件将返回到它所在的位置,对吗?我无法让它做到这一点。感谢您的帮助。
    • 您应该能够通过调整循环中的最后一个 echo 行来做到这一点。 (我对我的帖子做了一个小更新,以防它对您的下一步有所帮助。)
    猜你喜欢
    • 2017-04-01
    • 2013-05-03
    • 2015-01-11
    • 1970-01-01
    • 1970-01-01
    • 2015-12-27
    • 2016-08-20
    • 2022-07-22
    • 2011-04-22
    相关资源
    最近更新 更多