¡Hola! Bienvenido a Desde Linux. ¿Acaso estás harto de los pantallazos azules y los virus? Entonces, no dudes en migrar a Linux. Si recién empiezas, te recomendamos pasar por nuestra sección para Novatos. En caso de que estés buscando una Distribución Linux, tenemos guías para ayudarte a elegir la mejor. También contamos con un listado de Programas para reemplazar a los que usabas en Windows. No olvides utilizar la barra aquí debajo para obtener ayuda adicional.

Buscar con find y excluir archivos (por su extensión) de los resultados

Yo como muchos saben uso KDE, no obstante aunque me encanta la comodidad y el confort que KDE me brinda (por ser extremadamente completo), no uso ni remotamente todas las opciones que trae, inclusive ni algunas básicas.

Cuando cualquiera de ustedes desea buscar en X carpeta todos los archivos .jpg o simplemente los que en su nombre contengan “boda”, usan el buscador del sistema, pues yo no :)

No es que yo sea más geek, nerd o freak que otros, yo simplemente uso find (en terminal obvio) pues lo encuentro increíblemente más productivo, me es más simple para mí buscar con find en una terminal que tenga abierta (usando Yakuake) que tener que abrir el buscador del sistema.

Pues bien, hace no mucho quise buscar todos los archivos cuyo nombre contenga “collection“, pero yo NO quería ver los archivos .gif, ¿cómo lograr algo así? … ¿cómo decirle a find que no me muestre los .gif aún cuando su nombre contenga “collection”?

Lo primero que se me ocurrió es algo tan simple como:

find $HOME -iname *collection* | grep -v .gif

 Esto buscaría con find todos los archivos que tengan “collection” en su nombre, pero usando grep me aseguraba que en la terminal solo se me muestre lo DIFERENTE a “.gif” y… sí, funciona de maravillas :D

Pero en realidad no hace falta usar dos comandos (find + grep) para lograr esto, con find solo nos es suficiente:

find $HOME -iname *collection* -not \( -iname "*\.gif" \)

Y listo… pero acá no acaba el post :)

¿Y si queremos borrar esos archivos que se mostraron?

Para ello solo debemos agregar el parámetro -delete en la línea, o sea:

find $HOME -iname *collection* -not \( -iname "*\.gif" \) -delete

¿Y si queremos solamente cambiar los permisos a 755?

Para ello usaremos el -exec de find:

find $HOME -iname *collection* -not \( -iname "*\.gif" \) -exec chmod 755 {} \;

Y listo :)
Nada, que espero les resulte de interés…


KZKG^Gaara

KZKG^Gaara: Usuario de GNU/Linux y administrador de red desde hace algunos años. Intento mantenerme en el lado oscuro de la fuerza, pues es donde está lo divertido de la vida. Administrador y Fundador de todo esto que ven, pero uno más dentro de la familia.


No olvides dejar tu comentario

Tu dirección de correo electrónico no será publicada.

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Current day month ye@r *

  1. autor
  2. lector
    • autor
    • lector
  3. Rots87 usuario
  4. redactor
    • autor
      • davidlg lector
      • lector
        • autor
  5. lector
  6. lector
  7. lector
  8. Giskard usuario
    • Giskard usuario
  9. lector
    • autor
  10. lector
  11. lector
  12. Cost Granda usuario

DesdeLinux y DesdeFirefoxOS se encuentran felizmente hosteados en GNUTransfer