4 votos

¿Cómo eliminar el carácter de espacio (espacio en blanco) del final de los nombres de archivo y de las carpetas?

El problema con mac es que permite el carácter de espacio al final del archivo o carpeta. Si este archivo o carpeta con carácter de espacio al final es copiado a FTP usando Filezilla o Dropbox entonces mac hace carpetas con "Foldername_WhiteSpaceConflict". Para deshacerse de este problema todos los archivos y carpetas con carácter de espacio deben ser renombrados sin carácter de espacio. ¿Qué solución podría ser la mejor utilizando el terminal o algún programa?

1 votos

Automator puede ser útil, si no eres un programador.

0 votos

Para aquellos que no quieren utilizar la línea de comandos - use esto publicspace.net/ABetterFinderRename/index.html

5voto

hjdm Puntos 18

Aquí está el script para encontrar y eliminar el espacio final de los archivos y directorios:

#!/bin/bash                                                                                                                                                                                                        

IFS=$'\n'
for file in $(find -d . -name "* ")
do
  target_name=$(echo "$file" | sed 's/[ \t]*$//')
  if [ "$file" != "$target_name" ]; then
      if [ -e "$target_name" ]; then
          echo "WARNING: $target_name already exists, file not renamed"
      else
          echo "Move $file to $target_name"
          mv "$file" "$target_name"
      fi
  fi
done

1 votos

¿Qué sucede si tienes un archivo que termina en espacio en un directorio que termina en espacio?

0 votos

Muy buena, he actualizado mi respuesta :)

0 votos

Posición de -d es importante aquí, también he añadido una comprobación para evitar mv de sobrescribir los archivos existentes.

1voto

Devin Stagner Puntos 11

He tenido que arreglar un poco más el script. Para los archivos o carpetas que terminan en la letra 't', también eliminaría esa letra. Y la llamada para comprobar si el archivo existe no funcionaba correctamente así que cambié "nombre_objetivo" por $nombre_objetivo y ahora funciona.

#!/bin/bash                                                                                                                                                                                                        

IFS=$'\n'
for file in $(find -d . -name "* ")
do
  target_name=$(echo "$file" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
  if [ "$file" != "$target_name" ]; then
      if [ -e $target_name ]; then
          echo "WARNING: $target_name already exists, file not renamed"
      else
          echo "Move $file to $target_name"
          mv "$file" "$target_name"
      fi
  fi
done

0 votos

¡Esto me ha funcionado perfectamente! ¡Gracias!

1voto

Dawid Ferenczy Puntos 99

Existe una aplicación para Mac llamada ' Nombre Mangler ', esto hará todo lo que puedas querer hacer a un nombre de archivo/carpeta, e incluso puedes crear tu propio código y utilizarlo en la aplicación. Hay una prueba gratuita que te da 4 intentos ilimitados, y puedes revertir los nombres si te equivocas.

0voto

Polo Puntos 21

Algo así debería funcionar:

ruby -e "Dir.glob('* ').each { |name| File.rename name, name.chomp(' ') }"

Esto eliminará los espacios finales de cada archivo/directorio en el pwd.

0voto

Paphi Puntos 46

Devin Stagner 2016's responder funciona perfectamente, pero lo he actualizado el 2022-08-20 porque -d ha quedado obsoleto (ahora -depth ), también es necesario que ese interruptor vaya después de la ruta ( . ) que se está buscando. Añadido [ ] encerrar $archivo y $nombre_objetivo al mostrar la información a través del comando echo, para que sea más obvio lo que se eliminó del nombre de archivo.

#!/bin/bash

IFS=$'\n'
for file in $(find . -depth -name "* ")
do
  target_name=$(echo "$file" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
  if [ "$file" != "$target_name" ]; then
      if [ -e $target_name ]; then
          echo "WARNING: [$target_name] already exists, file not renamed"
      else
          echo "Move [$file] to [$target_name]"
          mv "$file" "$target_name"
      fi
  fi
done

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