Problema con sed utilizada en varios archivos

jil -  
 jil -
Hola,

estoy tratando de reemplazar una cadena de caracteres por otra en todos los archivos de texto de un directorio dado utilizando sed, pero obtengo el siguiente mensaje de error:

sed: no se puede leer /home/moi/data-limit/Lien vers data/TEST/*.txt: No existe el archivo o el directorio

aquí está el comando en cuestión:
sed -i -e 's/S1c \/ R1c/NA/g' '/home/moi/data-limit/Lien vers data/TEST/*.txt'

gracias por cualquier consejo...

debo añadir que funciona si lo hago archivo por archivo especificando el nombre del archivo... No parece estar dispuesto a aceptar el asterisco para tratar todos los archivos de texto del directorio.

2 respuestas

  1. zipe31 Mensajes publicados 34620 Fecha de registro   Estado Colaborador Última intervención   6 502
     
    Hola,

    Los espacios en la ruta no le gustan (él = GNU/Linux) ;-(

    A elección, o proteges los espacios o los pones entre comillas:
    /home/moi/data-limit/Enlace\ hacia\ datos/TEST/ *.txt /home/moi/data-limit/'Enlace hacia datos'/TEST/ *.txt

    Pequeños consejos:
    - Antes de usar la opción "-i", es mejor probar sin antes, o entonces preferir "-i.bak" para asegurarte de tener una copia de seguridad ;-\
    - Cuando se actúa sobre varios archivos a la vez, la opción "-s" puede resultar muy útil.

    --
    Zen mis nuggets ;-)
    Haz un gesto por el medio ambiente, cierra tus ventanas y adopta un pingüino.
    0
  2. jil
     
    Hola y gracias por tu respuesta, pero es extraño porque sin protección de los espacios, con un solo archivo, funciona muy bien.

    Tal vez aclare un poco más que ejecuto este comando a través de la orden system en el software Octave, lo que permite llamar a los comandos clásicos de linux en este programa.
    Así que tengo una especie de doble restricción sobre los caracteres especiales...

    Y desde ahí, bueno, yo
    0
    1. zipe31 Mensajes publicados 34620 Fecha de registro   Estado Colaborador Última intervención   6 502
       
      Quizás aclare de nuevo que realizo este pedido a través del comando system en el software Octave,
      Seguramente es la fuente del problema ;-((

      ¿Quizás deberías intentar renombrar el directorio que tiene espacios en primer lugar?
      0
    2. jil
       
      Hola, he resuelto el problema con esto:

      effacerPremiereCase = cstrcat("find", ' "', dossier, '"',' -maxdepth 1 -name "*.txt" -type f -exec ', "sed -i -e 's/S1c \\/ R1c/NA/g' ", '{} \;'); system(effacerPremiereCase);


      es un poco caótico, lo reconozco, pero parece funcionar.
      0