我正在将几个word文档转换为pdfs。输入文件名是这样的“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 Genetics”,但如果最后一部分太复杂,那么“CM_Genetics_in_OBGYN.pdf”是可以接受的。我对applecript和linux命令有一些经验,但不能说明这一点。
答案 0 :(得分: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