problema con /home/usuario/mi carpeta /home/usuario/mi\ carpeta

Imagen de keiserx
0 puntos

la idea es asi, estoy haciendo un script que nesesita recorrer carpetas para encontrar archivos y luego copiarlos. Hice todo hasta que me acorde que el comando cp no haceta una direccion del estilo /home/usuario/mi carpeta y que solamente la acepta si es del timpo /home/usuario/mi\ carpeta.

Todos los directorios los recorro con un find y un for ir. Osea que basicamente por cada bucle obtengo una direccion limpia de este estilo "/home/usuario/mi carpeta" mi problema y pregunta es : Como hago para modificar esa linea y que diga /home/usuario/mi\ carpeta" ?

Desde ya muchas gracias

Martin

Imagen de sanla
+1
0
-1

No me queda muy claro cual es el problema, no entiendo muy bien si quieres decir que toma el nombre de la carpeta como si fuese un archivo (lo que puedes solucionar con la opción -R del comando cp, o usando comodines /home/usuario/"mi carpeta"/*.*) o es que el comando no encuentra la carpeta por tratarse de una carpeta con un nombre con dos o más palabras con espacios entre ellas (lo que podría solucionarse con el uso de comillas /home/usuario/"mi carpeta").

De todas formas me parece que siempre puedes usar una sentencia IF...THEN, es decir, usas toda la ruta como una cadena de caracteres y la transformas en otra:

IF a="/home/usuario/mi carpeta" THEN b="/home/usuario/mi\ carpeta"

NOTA: Hace mucho que no programo absolutamente nada (ni siquiera scripts) y no recuerdo muy bien todo lo que sabia, quizás estoy diciendo algo de forma incorrecta sin darme cuenta o la solución no sea la más idónea en este caso.

+1
0
-1
Imagen de keiserx
+1
0
-1

me falto decir una cosa, todo esto es automatico se hace en un while. tengo un archivo el cual lo recorro con un while ese archivo de texto tiene todas las direcciones por las que tiene que pasar el script osea el archivo tiene por ejemplo

/home/usuario/carpeta
/home/usuario/carpeta2
/home/usuario/mi carpeta
...
...

yo no conozco los nombres de las carpetas como para modificarlos con un if tiene que ser algo automatico el tema es que no se como hacerlo por el script anda bien para los primeros 2 ejemplos pero en el tercero va a tirar error ya que el cp no va a aceptar como parametro /home/usuario/mi carpeta si o si me pide la barra invertida en el medio :S

igual gracias por contestar

+1
0
-1
Imagen de sanla
+1
0
-1

Pues creo que con el uso de comillas en el nombre de la carpeta que debería de funcionar.

Dices que no sabes los nombres de las carpetas, que los obtienes de un archivo, pues no veo por qué no puedes usar un IF.. Solo es cuestión de ordenar leer los nombres del archivo y si encuentra alguno con un espacio que le añada las comillas.

Lo siento, no se me ocurre ninguna otra forma, a ver si a alguien se le ocurre otro método más sencillo.

+1
0
-1
Imagen de joseluis
+1
0
-1

Tal como te han dicho utiliza las comillas, pero no para preguntar si tiene un espacio y "escaparlo", simplemente en el comando cp encierra la variable que contiene la ruta y el fichero que quieres copiar entre comillas, da igual que tenga espacios o no.

Por ejemplo si cada fichero a copiar (junto a su ruta) lo vas guardando en la variable ORIGEN, y lo vas a copiar al directorio indicado por la variable DESTINO lo único que tendrías que hacer es:

  cp "${ORIGEN}" "${DESTINO}"
+1
0
-1

Fdo. Forense asesino, Censor fundamentalista, Fustigador de novatos y Patético maleducado