En esta ocasión aprenderemos como buscar archivos desde la terminal,algo muy básico ya que es de lo mas común que se hace en un sistema,buscar archivos.
Tal vez en el futuro veamos tutoriales de seguridad informática y les aseguro que solo vamos a usar este tipo de comandos.
Para empezar para que queremos usar este buscador si el explorador cuenta con uno propio?
Find es un programa tipo consola un backend para buscar archivos,y no solo encuentra lo que le digamos sino que podemos ejecutar una accion basado en eso,como borrar,reproducir,copiar,mover,etc.
El filtrado es muy poderoso y la respuesta tambien(el tiempo que tarda en buscar).
La sintaxis mas básica del programa es la siguiente:
En donde ruta es la ruta,como hemos visto en Unix:
. => Directorio actual
../ => Un direcotorio para atras
~ => Nuestro home
/ => Raiz
etc.
-name => Va seguido de un argumento que es el nombre.
Para el nombre podemos hacer algo muy exacto como:
Y busca el archivo123.txt en la ruta que le indicamos,o podemos hacer un filtrado con regex de Unix:
etc.
En el caso de una regex de comodines como los anteriores podemos usar esta sintaxis:
Ya que no hay problema de espacios,en otro caso usar la regex entre comillas simples,o incluso el parámetro -regex.
Podemos hacer uso del parámetro -user para encontrar solo archivos pertenecientes a un usuario en especial,por ejemplo buscar archivos de root que esten en nuestro home:
Podemos hacer uso del parámetro -group para buscar un archivo que pertenezca ha ese grupo:
El parámetro es numérico,100 es el grupo users(para mas info googlear groups id unix)
Tenemos algunas opciones para enlaces simbólicos:
-P => Nunca seguir
-L => Seguir
Podemos buscar ejecutables(archivos con permisos de ejecucion) con el parametro -executable,por ejemplo buscar script's en shell ejecutables en nuestro home:
También podemos listar los detalles de los archivos encontrados,con el parámetro -ls:
El cual nos muestra: El usuario,el grupo al que pertenece,los permisos,la fecha del ultimo
Puede que halla archivos y directorios con el mismo nombre,así que podemos evitar encontrar archivos y directorios,mostrando solo lo que queramos con el argumento -type{d para directorios,f para archivos}:
Otros argumentos,l link,p FIFO,s socket.
Podemos buscar archivos basados en permisos con el parámetro -perm,por ejemplo buscar todos los script's en shell con permisos 775:
Por ultimo tenemos el parametro -exec que nos permite ejecutar un programa y pasale el resultado de la búsqueda como argumentos:
Por ejemplo buscar todas las fotos .png y verlas con feh:
Se recomienda poner toda la ruta del ejecutable,pero si no sabemos donde esta podemos buscarla con el comando which seguido del nombre del programa encerrado en esas comillas que no recuerdo como se llaman :P.
Eso es todo,no es todo,pero es lo que me parece mas importante para uso basico,para mas info,en terminal:
Ultimo ejemplo del poder de find:
Buscar todos los videos,mp4 y reproducirlos con totem:
Eso es todo :D.
Leer más...
Tal vez en el futuro veamos tutoriales de seguridad informática y les aseguro que solo vamos a usar este tipo de comandos.
Para empezar para que queremos usar este buscador si el explorador cuenta con uno propio?
Find es un programa tipo consola un backend para buscar archivos,y no solo encuentra lo que le digamos sino que podemos ejecutar una accion basado en eso,como borrar,reproducir,copiar,mover,etc.
El filtrado es muy poderoso y la respuesta tambien(el tiempo que tarda en buscar).
La sintaxis mas básica del programa es la siguiente:
find ruta -name nombre
En donde ruta es la ruta,como hemos visto en Unix:
. => Directorio actual
../ => Un direcotorio para atras
~ => Nuestro home
/ => Raiz
etc.
-name => Va seguido de un argumento que es el nombre.
Para el nombre podemos hacer algo muy exacto como:
-name "archivo123.txt"
Y busca el archivo123.txt en la ruta que le indicamos,o podemos hacer un filtrado con regex de Unix:
-name 'archivo???.txt'
-name 'arc*.txt'
etc.
En el caso de una regex de comodines como los anteriores podemos usar esta sintaxis:
-name \arc*.txt
Ya que no hay problema de espacios,en otro caso usar la regex entre comillas simples,o incluso el parámetro -regex.
Podemos hacer uso del parámetro -user para encontrar solo archivos pertenecientes a un usuario en especial,por ejemplo buscar archivos de root que esten en nuestro home:
find ~ -name \* -user root
Podemos hacer uso del parámetro -group para buscar un archivo que pertenezca ha ese grupo:
find ~ -name \* -group 100
El parámetro es numérico,100 es el grupo users(para mas info googlear groups id unix)
Tenemos algunas opciones para enlaces simbólicos:
-P => Nunca seguir
-L => Seguir
Podemos buscar ejecutables(archivos con permisos de ejecucion) con el parametro -executable,por ejemplo buscar script's en shell ejecutables en nuestro home:
find ~ -name \*.sh -executable -user $LOGNAME
También podemos listar los detalles de los archivos encontrados,con el parámetro -ls:
find . -name \*.sh -executable -ls
El cual nos muestra: El usuario,el grupo al que pertenece,los permisos,la fecha del ultimo
Puede que halla archivos y directorios con el mismo nombre,así que podemos evitar encontrar archivos y directorios,mostrando solo lo que queramos con el argumento -type{d para directorios,f para archivos}:
find ~ -name \*py* -type d # Directorios de python(por ejemplo)
find ~ -name \*py* -type f # Ficheros de python(por ejemplo)
Otros argumentos,l link,p FIFO,s socket.
Podemos buscar archivos basados en permisos con el parámetro -perm,por ejemplo buscar todos los script's en shell con permisos 775:
find . -name \*.sh -perm \755
Por ultimo tenemos el parametro -exec que nos permite ejecutar un programa y pasale el resultado de la búsqueda como argumentos:
Por ejemplo buscar todas las fotos .png y verlas con feh:
find ~ -name \*.png exec `which feh` {} +
Se recomienda poner toda la ruta del ejecutable,pero si no sabemos donde esta podemos buscarla con el comando which seguido del nombre del programa encerrado en esas comillas que no recuerdo como se llaman :P.
Eso es todo,no es todo,pero es lo que me parece mas importante para uso basico,para mas info,en terminal:
man find
Ultimo ejemplo del poder de find:
Buscar todos los videos,mp4 y reproducirlos con totem:
find ~ -user $LOGNAME -name \*.mp4 -exec `which totem` {} +
Eso es todo :D.