Selecione para criar um Serviço no Automator que receba arquivos e pastas selecionados apenas como entrada no Localizador . Adicione a ação Executar Script Shell e passe a entrada como argumentos .
Os argumentos que você recebe são os caminhos Unix completos dos arquivos e pastas selecionados. Usando growlnotify
, parte de Growl para fins de demonstração:
Rosnar mensagem como resultado da execução em um arquivo:
O comando aparece no menu de contexto de um arquivo ou pasta no Finder. Se houver muitos Serviços aplicáveis, eles serão agrupados em um submenu Serviços .
Se o seu script exigir ambos o caminho completo do arquivo, e o nome do arquivo , você pode fazer algo como o seguinte, primeiro extraindo o nome do arquivo do caminho completo:
for f in "$@"
do
name="$( basename $f )"
/usr/local/bin/growlnotify "$name" -m "$f"
done
Você pode ver que o nome do arquivo é usado como título, enquanto o caminho é usado como mensagem no Growl:
Se você precisar consultar informações adicionais, poderá executar um AppleScript curto para fazer isso. A seguir, um script de shell completo (como growlnotify
acima) que consulta as entradas e renomeia o arquivo selecionado para esse novo nome. Eu não incluí o tratamento de erros e tal, por exemplo adicionar dois pontos e barras ao novo nome do arquivo provavelmente quebrará o script.
# repeat for every file in selection
for f in "$@"
do
# capture input of a simple dialog in AppleScript
OUT=$( osascript -e "tell application \"System Events\" to text returned of (display dialog \"New Name of $f:\" default answer \"\")" )
# if the user canceled, skip to the next file
[[ $? -eq 0 ]] || continue
# old file name is the loop variable
OLD="$f"
# new file name is the same directory, plus the user's input
NEW="$( dirname "$OLD" )/$OUT"
# print a message announcing the rename
/usr/local/bin/growlnotify "Renaming…" -m "$OLD to $NEW"
# perform the actual rename
mv "$OLD" "$NEW"
done
Captura de tela de uma ação de renomeação de amostra anunciada por meio de growlnotify
: