文件夹操作未触发 shell 脚本

Folder action not triggering shell script

我有一些软件可以将名为 My Library.bib 的文件导出到名为 thesis 的文件夹中。假设导出文件的名称是固定的。每次导出这样的文件,我想:

  1. 删除所有名为 MyLibrary.bib 的旧文件(如果存在)。
  2. 从这个新文件中删除 space,使其成为最新的 MyLibrary.bib

我试过如下制作 Automator 'folder action':

...但是,虽然 shell 脚本在手动 运行 时可以完美运行,但文件夹操作本身似乎永远不会触发。

文件夹操作仍然启用(参见下面的设置),其他文件夹操作似乎也有效。

总而言之,我只想将进入 thesis 文件夹(随时自动)的所有名为 My Library.bib 的文件重命名为 MyLibrary.bib,替换任何现有的 MyLibrary.bib 文件。任何想法出了什么问题,或者如何实现这一目标?提前致谢。

当您使用“运行 Shell Script”动作时,当前目录是Home文件夹,而不是“thesis”文件夹。

所以,你必须使用cd命令来改变当前目录

信息:

  • 获取文件夹内容”操作对您想要执行的操作毫无用处, 你可以删除它。
  • 不需要rm命令,可以使用mv -f命令 覆盖现有文件

read firstLine ### get the path of the first dropped item
myDir=$(dirname "$firstLine") ### get the parent (this folder action)
cd "$myDir" && if [ -f "My Library.bib" ]; then 
    mv -f "My Library.bib" "MyLibrary.bib"
fi