Oui, une des façons de le faire en Automator est d'utiliser un Exécuter le Shell script action avec le exemple bash script code présenté plus loin.
Vous pouvez créer un Automator Flux de travail ou Service/action rapide , le flux de travail.
Si vous faites juste un Flux de travail vous devrez alors ajouter un Fichiers et dossiers action par exemple Obtenez les articles sélectionnés de Finder ou Obtenir les éléments spécifiés de l'explorateur puis ajouter un Exécuter le Shell script action .
Si vous faites un Service/action rapide alors vous n'avez besoin que d'un Exécuter le Shell script action .
Si vous choisissez un Service/action rapide puis le configurer pour utiliser fichiers et dossiers sur Finder .
Pour le Exécuter le Shell script action ont leur paramètres configuré comme :
- La coquille :
/bin/bash
- Passez l'entrée : comme arguments
- Remplacer le code par défaut de la Exécuter le Shell script action avec le exemple bash script code .
Le site exemple bash script code utilise expansion des paramètres de l'enveloppe pour couper en tranches et en dés les nom de chemin entièrement qualifié du (des) fichier(s) qui lui est (sont) transmis en morceaux nécessaires, puis renomme le(s) fichier(s) en utilisant le mv
commande avec le -n
option qui n'écrasera pas un fichier existant, en se basant sur l'adresse de l'utilisateur. valeurs des morceaux en tranches et en dés de la nom de chemin entièrement qualifié .
Comme codé il utilise un regex pour n'agir que sur fichiers qui ont le modèle suivant, par exemple, FirstName_LastName_000000000 avec toute extension ajoutée, par exemple : .pdf
Exemple bash script code :
# f = fully qualified pathname
# d = directory pathname
# fn = filename with extension
# n = filename without extension
# e = filename extension
# s = filename suffix (last 9 characters of filename without extension)
for f in "$@"
do
[ -f "${f}" ] || continue
d="${f%/*}"
fn="${f##*/}"
[[ ${fn} =~ ^.*_.*_[0-9]{9}\..* ]] || continue
n="${fn%.*}"
e="${fn##*.}"
s="${n: -9}"
[ -n "${s}" ] || continue
mv -n "${f}" "${d}/${s}.${e}"
done
Dont la sortie serait, par exemple : 000000000.pdf
Si vous voulez qu'il agisse uniquement sur .pdf
fichiers puis changer :
[[ ${fn} =~ ^.*_.*_[0-9]{9}\..* ]] || continue
A :
[[ ${fn} =~ ^.*_.*_[0-9]{9}\.[pP][dD][fF] ]] || continue
Autre réponse par Commentaire :
Les fichiers sont dans le même dossier. Les 9 derniers caractères sont tous uniques et ne sont pas dupliqués.
Si c'est une chose ponctuelle et que vous voulez juste ouvrir Terminal à cela dossier vous pouvez utiliser les éléments suivants commandement composé :
for f in *.[pP][dD][fF]; do mv -nv "${f}" "$(n="${f%.*}"; printf ${n: -9}).${f##*.}"; done
Il n'agira que sur PDF fichiers et renommer les 9 derniers caractères . Notez toutefois qu'aucun traitement des erreurs autre que de ne pas écraser un fichier existant.
Note : Le <em>exemple </em><strong>bash script </strong><em>code </em>est juste cela et ne contient pas d'autres <em>gestion des erreurs </em>le cas échéant. C'est à l'utilisateur qu'il incombe d'ajouter toute <em>gestion des erreurs </em>selon ce qui est approprié, nécessaire ou souhaité.