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 find
no es un árbol de directorios para find
recorrer. Como el resto de parámetros son " find
expresiones", de eso se queja.
El comando que está -exec
ejecutando debe terminar con un punto y coma ( ;
). Pero, dado que un punto y coma terminaría (el análisis de) el find
comando, -exec
el 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 sed
expresió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\it
coincide con " domain1it
", no con " domain1.it
". " \i
" no es especial, por lo que se trata como " i
".