# [consulta] Como borrar un tipo de archivo determinado(soluc)

## balo2k

Hola,

Tengo un respaldo de archivos antiguos de mi trabajo (principalmente MSOffice), en algún momento varios archivos se corrompieron, por lo que hay archivos que se pueden abrir y otros que no hay caso.

Quiero eliminar los archivos corruptos.

Para diferenciarlos de los buenos se me ocurrió utilizar el comando "file", con eso los que están corruptos me aparecen como "data", por ejemplo:

```
/tmp/resplima/0607 $ file * | grep data

1440x7214.ppt:                                                         DBase 3 data file with memo(s)

actividad cosecha.xls:                                                 data

agricultores carta.xls:                                                data

arrival.rtf:                                                           data

Carta descargos SAG S. Toledo.doc:                                     data

Carta facturas.doc:                                                    data

Carta FIN DE TEMPORADA 07.doc:                                         data

Cartel.doc:                                                            data

combi.odt:                                                             data

```

etc, etc...

El problema es que el comando file no se mete en los subdirectorios y no se me ocurre como encadenarlo a un comando rm para borrar esos archivos.

Seguro que esto se puede hacer, pero esta sobre mi capacidad por el momento.

Algún alma caritativa que me pueda ayudar o encaminar?

(he buscado en google y en el foro, pero no he podido encontrar lo que necesito)

Gracias de antemano.Last edited by balo2k on Sat Jun 12, 2010 12:20 pm; edited 1 time in total

----------

## pelelademadera

consulto, si haces un 

echo | ls -R | grep .doc > archivo.txt

lo haces con doc xls y los que sean archivo

fijate que valla agregando y no sobreescribiendo.

luego haces un cat para listar lo que tenes adentro.

no se si te sirve. no soy para nada bueno con los scripts

----------

## Stolz

```
find . -type f | while read linea; do

   tipo=`file -b "$linea"`

   if [[ $tipo == "data" ]];then

      rm  "$linea"

   fi

done
```

Ejecútalo estando en el directorio que contiene los archivos corruptos o puedes tener un desastre  :Wink: 

----------

## balo2k

Gracias Stolz!

Eso era exactamente lo que quería, funcionó de maravilla.

----------

## Inodoro_Pereyra

 *balo2k wrote:*   

> Para diferenciarlos de los buenos se me ocurrió utilizar el comando "file"

 

Hola, vengo a comentar que desde que anoche leí lo que cito mas arriba que me estoy pegando la cabeza con la pared por no haberme dado cuenta de esto. Este foro necesita un "agregar este hilo a tus marcadores" o algo así.

Salud!

----------

## ekz

 *Inodoro_Pereyra wrote:*   

>  Este foro necesita un "agregar este hilo a tus marcadores" o algo así.

 

+1 

Este foro es una gran fuente de conocimientos (y de variados ámbitos), aunque me cambiara de distro seguiría visitándolo.

¡Saludos!

----------

## pelelademadera

 *ekz wrote:*   

>  *Inodoro_Pereyra wrote:*    Este foro necesita un "agregar este hilo a tus marcadores" o algo así. 
> 
> +1 
> 
> Este foro es una gran fuente de conocimientos (y de variados ámbitos), aunque me cambiara de distro seguiría visitándolo.
> ...

 

eso es 100% seguro.... como tambien es 100% seguro que no me cambio de distro nunca mas

----------

