Je souhaite créer un service utilisant Automator pour exécuter un shell script sur tous les fichiers d'un dossier, par exemple supprimer tous les fichiers journaux. Ce que j'ai fait est
- Création d'un nouveau service dans automator.
- Ajout d'une action "Run Shell script". J'ai remplacé cette action par 'pwd' pour l'instant.
- Sélectionner "Le service reçoit les dossiers sélectionnés".
- J'ai essayé de l'exécuter, mais j'ai reçu un message. "Pour tester ce service dans Automator, ajoutez l'action "Obtenir les éléments de recherche spécifiés" au début de votre flux de travail. Supprimez ou désactivez l'action avant d'exécuter le flux de travail en dehors d'Automator.
- OK. J'ajoute donc "Obtenir les éléments spécifiés du Finder". J'ai ajouté un répertoire 'test' à la liste des éléments.
Maintenant, lorsque j'exécute le script, la fenêtre de résultats affiche mon répertoire personnel.
Ailleurs, j'ai lu qu'il fallait peut-être ajouter
cd "$1"
au début de mon script. J'ai fait cela, mais il imprime toujours mon répertoire personnel. Comment faire pour que ce truc imprime le répertoire que j'ai sélectionné dans "Get Specified Finder Items" ?
Modifié pour ajouter
Voici une capture d'écran d'un script qui fonctionne.
Voici une capture d'écran d'un script qui ne fonctionne pas.
La façon habituelle de traiter l'erreur "no match found : *.log" serait de rediriger la sortie d'erreur vers null. En remplaçant la ligne "rm" par
find . -name "*.log" -print0 | xargs -0 rm -rf
Mais cela fonctionne. Cela semble plus difficile qu'il ne devrait l'être.