¿Cómo puedo eliminar los espacios en blanco iniciales / finales de los nombres de archivo en Automator?

4

Mi esposa, tediosamente, renombra los archivos todo el tiempo cuando almacena en su almacenamiento externo de copia de seguridad, por lo que investigué usando Automator para hacer esto por ella. Ahora tengo una carpeta de automator donde solo coloca el archivo allí y cambiará el nombre del archivo de forma adecuada.

Ahora me enfrento a una situación en la que el archivo ahora puede contener espacios en blanco iniciales y / o finales, ¿cómo podría simplemente recortar este espacio en blanco?

Nunca he usado AppleScript pero soy experto en shell scripting, ¿puedo simplemente escribir un script de shell que realice esta tarea? Le daré una oportunidad a AppleScript si alguien me puede orientar en la dirección correcta.

    
pregunta Brett Ryan 30.10.2011 - 12:53

5 respuestas

1

for f in "$@"; do new="$(echo -n "$f" | sed -E 's|/$||;s| +$||;s|^ +||;s|/ +([^/]+$)|/|;s| +(\.[^.][a-zA-Z0-9.]*)$||g')"; mv "$f" "$new"; echo "$new"; done

(Pegar como una acción Ejecutar script de shell y seleccionar Pasar entrada: como argumentos .)

    
respondido por el user495470 31.10.2011 - 07:00
1

Hay una línea de script para eso, cd a esa carpeta y ...

for f in *; do mv "$f" "$(echo $f)"; done

Póngalo en un script de shell y llámelo desde Applescript:

tell application "Terminal"
    do script "whatever"
end tell
    
respondido por el Tuan Anh Tran 30.10.2011 - 13:47
1

Para una respuesta correcta basada en la respuesta de Tuan, se necesita lo siguiente, que no solo cambiará el nombre del archivo, sino que también preservará la cadena de acciones para las siguientes acciones.

Tenga en cuenta también que no queremos cambiar el nombre de la carpeta principal de ninguna manera, solo los archivos.

for f in "$@" ; do
    dirname=$(dirname "$f")
    basename=$(basename "$f")
    name=${basename%.*}
    ext=${basename##*.}
    name="$(echo "$name" | sed -Ee 's/^ +//;s/ +$//')"
    new="$dirname/$name.$ext"
    mv "$f" "$new"
    echo "$new"
done

Tampoco necesita poner esto en un script de shell, el automatizador puede tener esto incrustado en la acción "Ejecutar script de shell".

    
respondido por el Brett Ryan 31.10.2011 - 00:21
1

También estaba buscando eliminar los espacios en blanco finales de los nombres de carpetas y archivos. Esta publicación de Superusuario me ayudó.

    
respondido por el Joe J 27.09.2012 - 18:39
0

Hay un AppleScript (muy similar a Automator) que recorta los nombres de los archivos. Es un poco largo, así que no puedo publicarlo aquí, pero aquí es un enlace al código. Asegúrate de leer la parte inicial del código, ya que explica qué hace la secuencia de comandos y cómo funciona.

    
respondido por el daviesgeek 30.10.2011 - 17:44

Lea otras preguntas en las etiquetas