Recorte los nombres de los archivos en automator w. cáscara o applecript

2

¿Por qué no funciona esto?

(El automator está en sueco pero las partes son: obtener objetos seleccionados del buscador - obtener contenido de la carpeta - ejecutar shell script)

Quierorecortarlosprimerostrescaracteresdelosnombresdearchivoenunacarpetacomopartedeunaaccióndecarpetadeautomator.Yonoséshellscripting,peroheleídounpocoycreoqueestodeberíahacereltruco.

Tambiénheprobadoestoconapplecript:

Funciona mejor, pero solo con los primeros 8 archivos por alguna razón.

¿Alguien sabe cómo resolver esto? / Daniel

    
pregunta danielfrisk 16.04.2014 - 09:57

1 respuesta

3

La razón por la que su script de shell no está haciendo lo que quiere es porque Automator pasa la ruta completa de los archivos como argumentos.

Si la ruta completa a uno de los archivos es /Users/foo/Temp/file1.txt, su secuencia de comandos intentará cambiarle el nombre a ers / foo / Temp / file1.txt, que no es lo que desea.

Prueba esto en su lugar:

for f in "$@"; do
  FILENAME=$(basename "$f")
  DIRNAME=$(dirname "$f")
  mv "$f" "${DIRNAME}/${FILENAME:3}"
done

Mejor aún (maneja los nombres de archivo relativos correctamente):

for f in "$@"; do
  FILENAME=$(basename "$f")
  DIRNAME=$(dirname "$f")
  if [ -z "$DIRNAME" ]; then
    DIRNAME="."
  fi
  mv "$f" "${DIRNAME}/${FILENAME:3}"
done
    
respondido por el bennettp123 16.04.2014 - 11:05

Lea otras preguntas en las etiquetas