Vamos a ver algunos de los comandos que nos pueden resultar útiles cuando queremos buscar un archivo y/o carpetas en linux, desde consola.
- locate
locate archivo.php
Este comando buscar en una “especie de base de datos” donde tiene la ruta de los fichero y así resulta mucho más rápido encontrar los ficheros o carpetas que si se tiene que recorrer toda la estructura de directorios.
Hay que tener en cuenta que la “base de datos” del locate puede estar obsoleta. Para actualizarla debemos usar este comando (lo pondré en segundo plano con “&” porque le puede costar en ejecutarse).
updatedb &
- find
El comando find sirve para buscar ficheros y directorios pero es muy complejo y tiene muchas opciones, de las cuales sólo explicare algunas.
La ruta de acceso por defecto es el directorio actual (representado con un “. “) y la expresión por defecto es –print. A la hora de buscar, puedes especificar muchos parámetros:
- el nombre (-name xxx)
- Si es un archivo o carpeta (-type f –type d)
- Los permisos que tiene (-perm nnn)
- El usuario al que pertenece (-user usuario1)
- El grupo al que pertenece (-group grupo1)
- Si el fichero está vacio (-empty)
- El tamaño (-size n[cwbkMG]) siendo
‘b’ para bloques de 512-byte (este es el de por defecto)
‘c’ para bytes
‘w’ para two-byte words
‘k’ para Kilobytes (1024 bytes)
‘M’ para Megabytes (1048576 bytes)
‘G’ para Gigabytes (1073741824 bytes)find . -size 21k
- Modificados los datos en las últimas X*24h (- dtime n)
- Accedidos en las últimas X*24h (- atime n)
find . -name tureceta*
find . -type f -name tureceta* find . -type d -name tureceta*
find . -type d -perm 777
find . -type f -user usuario1
find . -type f -group grupo1
find . -type f -empty
find . -tipe f -dtime 2 (en las últimas 48h = 2*24)
find . -tipe f -atime 2 (en las últimas 48h = 2*24)
Recordar que con la ayuda y con el man del comando tendréis toda la información
find --help
man find
- whereis
Buscar la localización de un fichero binario, fuente o man
[root@server ~]# whereis grep grep: /bin/grep /usr/share/man/man1/grep.1.gz /usr/share/man/man1p/grep.1p.gz
Buscar la localización de un fichero binario o ejecutable
[root@sever ~]# which grep /bin/grep
Le puedo pasar los resultados al comando mv para que me valla moviendo cada uno de los archivos/carpetas encontrados a una nueva ruta?
Por ejemplo :
~$ find /home/user1 -type d -iname xxx* > mv /home/user2
Claro que lo puedes hacer así.
Estimados buen día:
Alguien puede orientarme como puedo hacer un comando para que dentro de un directorio busque todos los archivos con extensión .txt mayores a 0 bytes y los mueva a otra carpeta?
intente con esto pero me mueve todo sin tomar en cuenta el tamaño de los archivos:
find . -type f -size +1000c -exec mv /home/oradev/nuevo/*.txt /home/oradev/mover \;
Saludos.
Muchas gracias por el aporte, me ayudó bastante ya que soy nuevo en el mundo de Linux.
puede ayudarme con un scrip que me permita visualizar los drectorios de una ruta ingresada por teclado en el formato nombreDelDirectorio, usuarioPropietario, tamañoEnMegas