buscar: las rutas deben preceder a la expresión: `.'buscar: ¿posible patrón sin comillas después del predicado `-exec'?

buscar: las rutas deben preceder a la expresión: `.'buscar: ¿posible patrón sin comillas después del predicado `-exec'?

Necesito ejecutar en segundo plano este comando

sudo find '/abc/abc/' -type f -exec sed 's/domain1\it/domain2\com/g' '{}' \; . &

pero tengo dos problemas:

find: paths must precede expression: `.'
find: possible unquoted pattern after predicate `-exec'?

Y nuevamente, existen otras formas inteligentes de "buscar y reemplazar" más rápidamente, para hacer esto:sudo find '/abc/abc/' -type f -exec sed 's/domain1\it/domain2\com/g' '{}' ; &tal vez con grep?

Gracias

Respuesta1

¿ /abc/abc/Existe un directorio? ¿Dónde están los archivos a buscar? El " paths must preceed.." mensaje es un mensaje criptográfico. Decodificado significa que el primer (o los primeros) parámetro findno es un árbol de directorios para findrecorrer. Como el resto de parámetros son " findexpresiones", de eso se queja.

El comando que está -execejecutando debe terminar con un punto y coma ( ;). Pero, dado que un punto y coma terminaría (el análisis de) el findcomando, -execel punto y coma de ' debe ir acompañado de una barra invertida ( \). de este modo

-exec ...command... \; Bienvenido al mundo de la magia de "encontrar". Vuelva a leer "hombre encontrado".

Tu sedexpresión es incorrecta. Debería ser:

 sed -e 's/domain1\.it/domain2\.com/'

La barra invertida ( \) simplemente invierte el indicador de "manejo especial" en el siguiente carácter, por lo que domain1\itcoincide con " domain1it", no con " domain1.it". " \i" no es especial, por lo que se trata como " i".

información relacionada