Comando Find en Linux
Usos del comando find en linux
El comando find se usa para buscar ficheros que concuerden con las condiciones de búsqueda especificadas.
El comando find desciende a través del árbol de directorios buscando ficheros que coincidan con las condiciones de búsqueda.
El directorio desde el que opera es el directorio actual a menos que especifiquemos el directorio de búsqueda, y las principales condiciones de búsqueda, entre otras son por nombre o por tipo de fichero.
La forma de usar el comando find es: find [ruta…] [expresión]
Para buscar todos los archivos tipo jpg en el directorio actual, usaríamos la expresión:
find -name «.jpg»
Para buscar todos los archivos tipo zip en el directorio /var/www, usaríamos la expresión:
find /var/www -name «.zip»
También podemos usar el modificador -iname, en el caso que un nombre sea diferente por algunas de sus letras con alguna diferencia de mayúsculas o minúsculas, también las aceptaría como coincidentes (por ejemplo AaA sería lo mismo que aAA o AAA)
find /var/www -iname «*cal»
Para buscar todos los archivos de un determinado usuario:
find /var/www -user root
Para buscar todos los archivos de un grupo determinado de usuarios:
find / -group root
Para buscar archivos que pesen más de 10000kb:
find / -size +10000
Para buscar archivos que pesen menos de 1kb:
find / -size -1
Para buscar archivos que sean exactamente de 3kb:
find / -size 3
Para buscar todos los subdirectorios, empleamos el modificador -type:
find /var/www -type d
Para buscar archivos con permisos 777 para controlar la seguridad de una web o de cualquier directorio:
find /var/www -perm 777
El comando find también nos permite buscar y hacer alguna acción. Por ejemplo si queremos que todos los archivos que encuentre con permiso 777 pasen a 755, es decir que sólo pueda modificar el usuario del directorio, deberemos usar find del siguiente modo:
find /var/www -perm 777 -exec chmod 755 {} \;
Ejemplos del comando find linux:
Añadimos un listado de usos del comando find a modo de ejemplos:
find / -type f -name *.jpg -exec cp {} . \; find . -type f -size +10000 -exec ls -al {} \; find . -atime +1 -type f -exec mv {} TMP \; # mv files older then 1 day to dir TMP find . -name "-F" -exec rm {} \; # a script error created a file called -F find . -exec grep -i "vds admin" {} \; find . \! -name "*.Z" -exec compress -f {} \; find . -type f \! -name "*.Z" \! -name ".comment" -print | tee -a /tmp/list find . -name *.ini find . -exec chmod 775 {} \; find . -user xuser1 -exec chown -R user2 {} \; find . -name ebtcom* find . -name mkbook find . -exec grep PW0 {} \; find . -exec grep -i "pw0" {} \; find . -atime +6 find . -atime +6 -exec ll | more find . -atime +6 -exec ll | more \; find . -atime +6 -exec ll \; find . -atime +6 -exec ls \; find . -atime +30 -exec ls \; find . -atime +30 -exec ls \; | wc -l find . -name auth* find . -exec grep -i plotme10 {}; find . -exec grep -i plotme10 {} \; find . -ls -exec grep 'PLOT_FORMAT 22' {} \; find . -print -exec grep 'PLOT_FORMAT 22' {} \; find . -print -exec grep 'PLOT_FORMAT' {} \; find . -print -exec grep 'PLOT_FORMAT' {} \; find ./machbook -exec chown 184 {} \; find . \! -name '*.Z' -exec compress {} \; find . \! -name "*.Z" -exec compress -f {} \; find /raid/03c/ecn -xdev -type f -print find /raid/03c/ecn -xdev -path -type f -print find / -name .ssh* -print | tee -a ssh-stuff find . -name "*font*" find . -name hpmcad* find . -name *fnt* find . -name hp_mcad* -print find . -grep Pld {} \; find . -exec grep Pld {} \; find . -exec grep Pld {} \; find . -exec grep PENWIDTH {} \; | more find . -name config.pro find . -name config.pro find /raid -type d ".local_sd_customize" -print find /raid -type d -name ".local_sd_customize" -print find /raid -type d -name ".local_sd_customize" -ok cp /raid/04d/MCAD-apps/I_Custom/SD_custom/site_sd_customize/user_filer_project_dirs {} \; find /raid -type d -name ".local_sd_customize" -exec cp /raid/04d/MCAD-apps/I_Custom/SD_custom/site_sd_customize/user_filer_project_dirs {} \; find . -name xeroxrelease find . -exec grep xeroxrelease {} \; find . -name xeroxrelease find . -name xeroxrelease* -print 2>/dev/null find . -name "*release*" 2>/dev/null find / -name "*xerox*" 2>/dev/null find . -exec grep -i xeroxrelease {} \; find . -print -exec grep -i xeroxrelease {} \; find . -print -exec grep -i xeroxrelease {} \; > xeroxrel.lis find . -exec grep -i xeroxrel {} \; find . -print -exec grep -i xeroxrel {} \; find . -print -exec grep -i xeroxrel {} \; | more find /raid/03c/inwork -xdev -type f -print >> /raid/04d/user_scripts/prt_list.tmp find . -exec grep '31.53' {} \; find . -ls -exec grep "31/.53" {} \; > this.lis find . -print -exec grep "31/.53" {} \; > this.lis find . -print -exec grep 31.53 {} \; > this.lis find . -exec grep -i pen {} /; find . -exec grep -i pen {} \; find . -print -exec grep -i pen {} \; | more find . -exec grep -i pen {} \; find . -atime +6 -exec ll | more \; find . -atime +6 -exec ll \; find . -atime +6 -exec ls \; find . -atime +30 -exec ls \; find . -atime +30 -exec ls \; | wc -l find . \! -name '*.Z' -exec compress -f {} \; find . -name 'cache*' -depth -exec rm {} \; find . -name 'cache*' -depth -print | tee -a /tmp/cachefiles find . -name 'cache[0-9][0-9]*' -depth -print | tee -a /tmp/cachefiles find . -name 'hp_catfile' 'hp_catlock' -depth -print | tee -a /tmp/hp.cats find . -name 'hp_catfile' -name 'hp_catlock' -depth -print | tee -a /tmp/hp.cats find . -name 'hp_cat*' -depth -print | tee -a /tmp/hp.cats find . -name 'hp_cat[fl]*' -depth -print | tee -a /tmp/hp.cats find /raid -name 'hp_cat[fl]*' -depth -print find . \! -name '*.Z' -exec compress -f {} \; find . -name '*' -exec compress -f {} \; find . -xdev -name "wshp1*" -print find . -xdev -name "wagoneer*" -print find . -name "xcmd" -depth -print find /usr/contrib/src -name "xcmd" -depth -print find /raid -type d -name ".local_sd_customize" -exec ls {} \; find /raid -type d -name ".local_sd_customize" \ -exec cp /raid/04d/MCAD-apps Busca ficheros con más de 48 horas antiguedad y los borra: find /var/lib/amavis/virusmails/ -type f -mtime +1 -delete