A zsh
script:
Este script es una solución mínima para renombrar todas las capturas de pantalla de un directorio para reemplazar cada espacio con un guión bajo ( _ ).
#!/bin/zsh
# shotfnmv.sh # FILE NAME FOR THIS SCRIPT
cd $HOME/Desktop/screenshots2 # CHOOSE YOUR FOLDER
for afile in *.png # CHOOSE YOUR FORMAT; IF NOT .png
do
if [[ $afile == "Screenshot "* || $afile == "Screen Shot "* ]]; then
newfilenm=$(echo $afile | sed 's/[[:blank:]]\{1,\}/_/g')
mv $afile $newfilenm
fi
done
He optado por utilizar el nativo (Apple) sed
( editor de flujo ) utilidad para realizar la sustitución; cada espacio [[:blank:]]
se sustituirá por un guión bajo _
el resultado se almacena en la variable newfilenm
. El nombre del archivo ( afile
) se renombrarán (utilizando mv
) a newfilenm
por lo que el nombre original del archivo desaparecerá después de ejecutar este script.
Sólo se renombrarán aquellos archivos que coincidan con uno de los dos criterios, por lo que si guardas archivos con "nombres personalizados" en la misma carpeta, este script no debería renombrarlos. He utilizado dos criterios ( "Screenshot "*
o "Screen Shot "*
) para esta pantalla porque sé que en Ventura la palabra única Screenshot
en lugar de la palabra dual Screen Shot
tal y como está en su sistema.
Una cuestión logística:
Tenga en cuenta que esta solución le deja un problema logístico por resolver: ¿Cómo puedo ejecutar este script cuando sea necesario?
No he abordado esta cuestión aquí porque no me lo has preguntado específicamente, pero voy a esbozar un par de enfoques. Puedes optar por hacer otra pregunta después de revisar las alternativas.
watch
es una utilidad de Linux/Unix que puede detectar cuándo se añade o cambia un archivo en un directorio designado, y esto puede utilizarse para desencadenar otra acción (por ejemplo, ejecutar el script anterior). No está disponible de forma nativa en MacOS, pero se puede obtener a través de cualquiera de los gestores de paquetes de terceros de uso común: MacPorts o HomeBrew.
- Configurar un "Agente de Usuario" para que se ejecute bajo
launchd
Utilizo una aplicación de terceros llamada LaunchControl
para este tipo de cosas, pero también se puede utilizar la herramienta nativa launchctl
si te inclinas por el masoquismo :) LaunchControl
proporciona una watch
-como que lo hace muy fácil. LaunchControl
no es gratuito, pero no es muy caro y merece la pena, en mi opinión.
- Ejecuta el script de forma continua con
sleep
No me gusta la idea, me parece un despilfarro y una ineficacia, pero es bastante fácil. Hay un hilo sobre SO en el que se explica cómo hacerlo con algunas comparaciones con watch
. Estrechamente relacionado está el uso del cron
para programar las horas de ejecución del script.
EDITAR:
Acabo de notar un nueva respuesta que puede proporcionar una respuesta más completa... Desafortunadamente, no estoy familiarizado con Automator, pero puede ser justo el billete?