文件夹操作未触发 shell 脚本
Folder action not triggering shell script
我有一些软件可以将名为 My Library.bib
的文件导出到名为 thesis
的文件夹中。假设导出文件的名称是固定的。每次导出这样的文件,我想:
- 删除所有名为
MyLibrary.bib
的旧文件(如果存在)。
- 从这个新文件中删除 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
我有一些软件可以将名为 My Library.bib
的文件导出到名为 thesis
的文件夹中。假设导出文件的名称是固定的。每次导出这样的文件,我想:
- 删除所有名为
MyLibrary.bib
的旧文件(如果存在)。 - 从这个新文件中删除 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