Foros del Web » Administración de Sistemas » Unix / Linux »

Borrar linea con find

Estas en el tema de Borrar linea con find en el foro de Unix / Linux en Foros del Web. Hola a todos! Tengo una pequeña duda con linux. Lo que quiero conseguir es que mediante el comando "find" busque un listado de ficheros y ...
  #1 (permalink)  
Antiguo 26/02/2007, 13:41
 
Fecha de Ingreso: junio-2004
Ubicación: Barcelona
Mensajes: 107
Antigüedad: 20 años, 5 meses
Puntos: 2
Borrar linea con find

Hola a todos!

Tengo una pequeña duda con linux. Lo que quiero conseguir es que mediante el comando "find" busque un listado de ficheros y que luego borre la 3º linea de cada uno de los ficheros encontrados.
Por mucho que pruebo con -exec y otras cosas no descubro la manera. Alguien sabe la solucion?
Muchas gracias.
  #2 (permalink)  
Antiguo 27/02/2007, 20:37
Avatar de c4r1o5  
Fecha de Ingreso: febrero-2005
Mensajes: 81
Antigüedad: 19 años, 9 meses
Puntos: 1
Re: Borrar linea con find

Utilizando solo find no podrias hacer eso, tendrias que hacer un pequeño script, utilizando find, cat, sed y algunos otros comandos.

Primero tendrias que generar la lista de archivos a los que le quieres borrar la tercer linea:
find /rutadebusqueda/ -name "nombredelarchivo" > listadearchivos.txt

luego dentro de un ciclo leer linea por linea para determinar el nombre del archivo (aqui la magia la hace el comando read):

while read listadearchivos.txt archivo
do
# Aqui borra la tercera linea de cada archivo
cat $archivo |sed 3d > $archivo
done

Al final quedaria algo como esto :
############# INICIA SCRIPT ############
#!/bin/sh

find $0 -name $1 > listadearchivos.txt
while read listadearchivos.txt archivo
do
cat $archivo |sed 3d > $archivo
done

rm -f listadearchivos.txt
############# TERMINA SCRIPT ############

Copia este codigo y pegalo en un archivo llamado buscaycopia.sh. Lo unico que tendrias que hacer es pasar como parametros la ruta de busqueda y el patron con el que buscas los archivos, por ejemplo : #buscayborra.sh /home/juan archivoimportante

Pruebalo, yo no tengo donde hacerlo. Espero que pueda ayudarte.
__________________
¿Que importa el resto?, el resto es simplemente la humanidad, hay que ser superior a humanidad, por fuerza, por altura de alma, por desprecio ...

Última edición por c4r1o5; 27/02/2007 a las 20:46
  #3 (permalink)  
Antiguo 06/03/2007, 08:42
 
Fecha de Ingreso: junio-2004
Ubicación: Barcelona
Mensajes: 107
Antigüedad: 20 años, 5 meses
Puntos: 2
Re: Borrar linea con find

Wenas a todos!

Al final resolvi la duda yo solito xD. Dejo aki la respuesta por si algun dia a alguien le hace falta ;):

find / -name archivo -exec sed '3d' {} > salida \;

Ale, problema resuelto^^
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:04.