Assegna nomi di file in automator w. conchiglia o mele

2

Perché non funziona?

(L'automatizzatore è in svedese ma le parti sono: ottenere oggetti cercatore selezionati - ottieni contenuti cartella - eseguire script di shell)

Voglioritagliareiprimitrecaratterideinomifileinunacartellacomepartediun'azionedellacartelladiunautomatore.Nonconoscoscriptdishell,maholettounpo'epensochequestodovrebbefareiltrucco.

Hoancheprovatoquestoconilapplescript:

Funziona meglio, ma solo con i primi 8 file per qualche motivo.

Qualcuno sa come risolvere questo problema? / Daniel

    
posta danielfrisk 16.04.2014 - 09:57
fonte

1 risposta

3

Il motivo per cui lo script della shell non sta facendo ciò che vuoi è perché Automator passa il percorso completo dei file come argomenti.

Se il percorso completo di uno dei file è /Users/foo/Temp/file1.txt, lo script tenta di rinominarlo in ers / foo / Temp / file1.txt, che non è quello che desideri.

Prova invece:

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

Meglio ancora (gestisce i nomi dei file relativi correttamente):

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

Leggi altre domande sui tag