entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

eliminar archivos en terminal excepto uno

Buenas,

Quiero eliminar todos los archivos de un directorio con una extension en un Makefile, excepto uno en concreto. No encuentro la manera de realizar esta operacion en una sola sentencia. Aqui les explico el comando actual, que hace que explote mi fichero:

rm *.o

El fichero a conservar es

sala.o

He probado con

rm !(sala.o) *.o

cambiando el orden, sustituyendo ! por ^, etc...

Alguna solucion??

1 Respuesta

2votos

Leonardo-Tadei Puntos227320

Hola Sergio,

por el comando, asumo que estás en una terminal de Unix o GNU/Linux. Si es este el caso, el comando FIND tiene una opción para borrar archivos y un excelente manejo de patrones de archivos y tipos.

Podrías hacerlo así:

find . ! -name solo.o -type f -delete

En donde:
. es el directorio actual
! -name xxx es que no tenga el nombre xxx
-type f es que sea un archivo (y no un directorio o enlace simbólico o enlace duro)
-delete es que borre lo que concuerde

Una de las cosas buenas de FIND es que sin el parámetro -delete podés probar para ver si la salida es realmente lo que queires borrar.

Saludos!

0voto

techack comentado

Otro problema surge porque en el mismo directorio se encuentran ficheros .c, .h que no se deben eliminar. Por ello, no consigo hacer que la sentencia find funcione correctamente. Otra solucion?
Gracias!

0voto

Leonardo-Tadei comentado

La misma solución con más excepciones:

find . ! -name solo.o ! -name "*.c" ! -name "*.h"  -type f -delete

y así para todo lo que quieras exceptuar, ya sea por nombre o por patrón de concordancia.

Más detalles en man find

0voto

techack comentado

Muchas gracias, ahora si que funciona!!!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta