¿Cómo puedo arreglar la siguiente línea:
for line in $(cat /root/files_to_search); do find /opt/ -iname $line -exec rm {} >> files_founded.txt ; done El problema es que los comandos for y -exec terminan en punto y coma, el comando for tiene esta sentencia
for i in something; do command ; done (do terminate with ;) y find la declaración con -exec
find /path/ -name somestring -exec command \; (-exec also finish with ;)Ni siquiera necesita usar -exec echo {} ya que esa es la acción predeterminada en find . Puedes usar esto para bucle:
while IFS= read -r line; do find /opt/ -iname "$line" done < /root/files_to_search >> files_founded.txt No es necesario usar for line in $(cat ...) ya que puede leer desde la entrada usando < file
Consulte las preguntas frecuentes de BASH sobre la lectura de un archivo línea por línea
Si debe usar -exec en find , use:
while IFS= read -r line; do find /opt/ -iname "$line" -exec rm {} \; done < /root/files_to_search >> files_founded.txt