繁体   English   中英

通过Automator中的终端复制文件

[英]Copy files through terminal in Automator

因此,以下问题似乎是由Automator引起的,但我不确定(我会发布图像,但积分不足):

我有一个Automator服务,其第一个操作是转到~/Desktop/D53_C71J_C “获取指定的查找器项目”工具。 下一个动作是“ Run Shell Script”,其中包含

PATH="$@"
echo "Path: $PATH"
cd "$PATH"
for f in *;
do
    echo "f: $f"
    CAT="$PATH/$f"
    echo "CAT: $CAT"
    cp "$f" ~/Desktop
done 

结果是

Path: /Users/ajharn/Desktop/D53_C71J_C
f: D53_C71J_C1.psd
CAT: /Users/ajharn/Desktop/D53_C71J_C/D53_C71J_C1.psd

f: D53_C71J_C1_MERGE.psd
CAT: /Users/ajharn/Desktop/D53_C71J_C/D53_C71J_C1_MERGE.psd
f: D53_C71J_C2.psd

等等,直到到达cp为止,所有方法都有效。 我已经测试过回声,并且这样和路径都对齐了。 令人困惑的部分是cp D53_C71J_C2.psd ~/Desktop在Terminal中可以正常工作。

您非常不明智地选择了变量名:shell使用PATH将路径存储到可执行文件所在的目录(请参阅BashGuidebash手册页中 有关特殊shell参数的部分 )。 由于cp是一个外部程序,而不是shell命令(可在/bin/cp ),因此当您用当前的工作路径覆盖PATH时,shell不会找到它-因此它永远不会运行。

按照以下方式做更多事情

[[ -d "$@" ]] && cd "$@"                # cd into folder if is one
for f in ./*; do                        # always prefix relative globs
    [[ -f "$f" ]] && cp "$f" ~/Desktop  # only copy files
done

一切都会好起来的。 当然,添加“获取文件夹内容”操作和“移动查找器对象”操作也将起作用,而无需任何shell干预。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM