Automator:文件夹中文件的shell脚本

时间:2014-03-28 20:31:38

标签: shell terminal automator

我尝试使用Automator创建一个简单的应用程序,此应用程序需要将特定文件夹中的所有txt文件合并到一个csv文件中。这是脚本:

cat *.txt >merged.csv

如果我打开终端,移动到包含文件的文件夹并执行它,这可以正常工作。

我希望尽可能让它作为应用程序工作,我在App Icon上拖动文件夹,然后在文件夹中创建合并文件。然后显示已完成工作的通知。

我试过了:

enter image description here

但它在shell中给我一个错误(在终端工作正常)。 我做错了什么?

1 个答案:

答案 0 :(得分:1)

您需要更改Run Shell Script操作以传递输入as arguments - 然后当前所选Finder项的路径将作为$1(...)传递。

在shell脚本中,您需要将(cd "$1")更改为传入的文件夹,以便在正确的位置执行合并命令。

我建议你让你的shell脚本更健壮,以确保(a)只传入文件夹(在Finder中当前选中)和(b)只是一个项目:

# Make sure that a _single folder_ is currently selected in Finder; exit otherwise.
[[ $# -eq 1 && -d "$1" ]] || 
  { osascript -e 'display alert "Please select a single folder."'; exit 1; }

# Change to the folder.
cd "$1" || exit

# Perform the merge command.
cat *.txt >merged.csv