jueves, 21 de octubre de 2010

Borrar un archivo con una extención específica de todo el árbol de directorios

Me ha pasado en varias ocasiones que después de introducir el pendriver en una computadora desconocida este me viene con infinidad de virus cuyos nombres son similares a los de los archivos que están en el pendriver pero que en realidad son programas ejecutables. Me llevaría horas borrar cada uno de esos archivos desde el directorio raíz y  cada subcarpeta.

Más o menos lo primero que a uno se le ocurriría es algo así como esto (en realidad no recuerdo que fue todo lo que se me ocurrió) :

find /media/nombre_pendriver/ -iname '*.exe'| xargs  rm -f -v
pero es inútil. No funciona o al menos eso es lo que pasa en ubuntu.

Después de revisar los man y eso descubrí que para que funcionase debía especificar el delimitador de cada entrada de archivo que le llega a xargs (este asume que por defecto ese delimitador es 0, si no recuerdo mal). El delimitador en el caso de ubuntu es '\n' que lo conocerán aquellos que tienen algo de experiencia en lenguaje C. Colocando entonces el delimitador el comando queda así:

find /media/nombre_pendriver/ -iname '*.exe'| xargs --delimiter='\n' rm -f -v

toma en cuenta que si el nombre del pendriver o de la carpeta raíz desde la cual se borrara tiene espacios en blanco se debe colocar '*' en lugar de los espacios en blanco o encerrar todo el nombre entrecomillas.

No hay comentarios:

Publicar un comentario