0 votos

Ayuda con el script para recortar caracteres del nombre de archivo

Estoy tratando de ejecutar un script de cambio de nombre bastante simple, pero no puedo hacerlo con un flujo de trabajo de Automator y mi conocimiento de scripting es totalmente inadecuado (esto es en última instancia para usarlo con Hazel). El equivalente que estoy tratando de ejecutar en Name Mangler es:

'eliminar 2 caracteres comenzando en el índice 1 - contando desde el principio'

y

'eliminar 2 caracteres comenzando en el índice 2 - contando desde el final'

Cualquier ayuda sería apreciada; AppleScript, Java y Shell están bien ya que esto estará incrustado en Hazel.

0 votos

¿Puedes dar algunos ejemplos de los nombres de archivo originales y los nombres de archivo nuevos esperados?

0 votos

¿Cómo se define la indexación, qué es el índice 1, el índice 2, etc.?

1voto

Seif Puntos 121

ACTUALIZACIÓN: Malinterpreté tu pregunta y originalmente di una respuesta que comenzaba en "carácter 1." Si entendí correctamente, quieres recortar los primeros dos caracteres y los dos últimos. Por lo tanto, quieres empezar en "carácter 3." He corregido esto aquí.

Hazlo de esta manera:

set the_short_name to characters 3 thru -2 of the_original_name as string

Eso es todo lo que hay que hacer.

Dado que estás trabajando con Hazel, puedes obtener el nombre del archivo de esta manera:

set the_original_name to name of theFile

Puede que quieras quitar más de solo dos caracteres, ya que los últimos cuatro caracteres probablemente sean ".png", por lo que quita 6 caracteres y luego agrega ".png" al nombre corto.

Otra cosa: Hazel podría pensar que el archivo renombrado es un archivo "nuevo" y, en consecuencia, ejecutar el AppleScript en el archivo renombrado una y otra vez hasta que el nombre sea tan corto que no pueda ser más corto. La forma en que manejaría eso es moviendo el archivo fuera de la carpeta observada primero y luego renombrándolo. En mi caso, tengo una carpeta llamada "Capturas de pantalla renombradas" en mi escritorio - tu ruta será diferente. Utiliza tu propio nombre de usuario (no "youruser" como he puesto en la línea de abajo).

move theFile to (POSIX file "/Users/youruser/Desktop/Renamed Screenshots")
        set the name of theFile to the_short_name & ".png"

Eso debería hacerlo.

0voto

Douglas Puntos 10417

Aquí hay un comando bash de una línea que hará esto por ti:

for file in *.png; do ext=${file##*.}; fname="`basename $file .${ext}`" ; len=`expr ${#fname} - 4`; fname="${fname:2:${len}}"; fname="${fname}.${ext}"; mv -- "${file}"  "${fname}"  ;done

Este comando separará el nombre del archivo de la extensión, calculará la longitud de la nueva cadena, luego eliminará los primeros dos caracteres y los últimos dos caracteres y "moverá" el archivo original al archivo recién nombrado.

Ejecutando este comando en algunos archivos PNG en una "Carpeta de prueba"

Antes:

introduzca la descripción de la imagen aquí

Después:

introduzca la descripción de la imagen aquí

0 votos

@usuario Puedes cambiar el mv a cp para no sobrescribir, pero eso duplicará tus archivos.

0 votos

Como dije anteriormente "Como está escrito, esta respuesta no utiliza verificación de errores y tiene el potencial de sobreescribir archivos sin previo aviso!" y cambiar mv a cp en mi opinión no está en línea con los resultados deseados y el método que el OP quiere emplear. Establecer que el deseo del OP, publicando código que tiene el potencial de ser destructivo porque no utiliza verificación de errores es, como mínimo, una mala práctica.

0 votos

@user3439894 El OP específicamente pidió un script de renombrado bastante simple. Tu comentario es pura conjetura en el mejor de los casos sobre lo que "se deseaba". Siéntete libre de respaldar tu argumento de que es incongruente con lo que el OP quiere; no incongruente con lo que quieres.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X