获取Mac服务中的文件夹路径/内容

时间:2013-09-03 18:56:54

标签: macos bash automator

我有一个很好的工作文件夹操作,它将文件夹中的每张图片加水印并将它们放在一个文件夹中。

watermark=~/Dropbox/Business/mihalko_logo_bw.png
shopt -s nocasematch
for f; do
  [[ $f =~ .*\.(jpe?g|png)$ ]] || continue
  d="${f%/*}/wm_$(date +%Y_%m_%d)"
  mkdir -p "$d"
  target="$d/${f##*/}"
  size=$(/usr/local/bin/identify -format '%[fx:w/4,279]' "$f")
  /usr/local/bin/composite -dissolve 10% -gravity SouthEast\
  \( $watermark -geometry $size \) "$f" -quality 100 "$target"
  rm $f
done
~/imageoptim-cli/bin/imageOptim --jpeg-mini --image-alpha --quit --directory "$d"

不幸的是,FA只在一个目录中工作。我试图从这段代码创建一个服务,但没有成功。有谁知道在这种情况下需要哪些修改/自动操作?

2 个答案:

答案 0 :(得分:0)

使用关联数组:

watermark=~/Dropbox/Business/mihalko_logo_bw.png
shopt -s nocasematch

declare -A dirs

for f; do
  [[ $f =~ .*\.(jpe?g|png)$ ]] || continue
  d="${f%/*}/wm_$(date +%Y_%m_%d)"
  mkdir -p "$d"
  dirs["$d"]="$d"
  target="$d/${f##*/}"
  size=$(/usr/local/bin/identify -format '%[fx:w/4,279]' "$f")
  /usr/local/bin/composite -dissolve 10% -gravity SouthEast\
  \( "$watermark" -geometry $size \) "$f" -quality 100 "$target"
  rm "$f"
done

for d in "${dirs[@]}"; do
  ~/imageoptim-cli/bin/imageOptim --jpeg-mini --image-alpha --quit --directory "$d"
done

答案 1 :(得分:0)

  

不幸的是,FA只在一个目录中工作。我试图从这段代码创建一个服务,但没有成功。有谁知道在这种情况下需要哪些修改/自动操作?

如果您设置了文件夹操作,则应该可以通过

将文件夹操作附加到其他文件夹
  1. 进入Finder
  2. 右键单击要将“文件夹操作”附加到的文件夹。
  3. 从上下文菜单中选择第一项“文件夹操作设置”:
  4. Folder Action Setup

    1. 选择此菜单项将打开一个窗口,您可以在其中将文件夹操作附加到其他文件夹。
    2. 如果您需要使用Automator创建服务,则可以执行以下操作:

      1. 运行Automator应用
      2. 创建新服务
      3. 添加一个名为“Run Shell Script”的动作到你的wokflow。
      4. 将代码复制并粘贴到shell脚本操作中。
      5. 选择服务可以使用的输入类型和应用程序。
      6. 我希望这会对你有所帮助。

        如果我能提供进一步帮助,您可以发送电子邮件至:kaydell@yahoo.com。