2013-12-16 108 views
0

我将几个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”是可以接受的。我有一些与苹果脚本和Linux命令的经验,但不能指出这一点。使用Applescript或Linux从文件名中删除字符串

回答

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 
+0

这是结果我在终端看起来像我想要的。非常感谢!此外,我正在尝试将其添加到automator中的工作流程中,我已将其设置为逐个分配项目,并且我希望此步骤重命名该项目并将其从工作流程中的相同文件夹中返回。我到底该如何做到这一点。如果该命令刚刚结束并且没有重定向,该文件将返回到它出现的位置,对吧?尽管如此,我无法做到这一点。谢谢您的帮助。 –

+0

你应该可以通过调整循环中最后一个'echo'行来完成。 (我对我的帖子做了一个小小的更新,以防它可能有助于你的下一步。) – janos

相关问题