24 examples for find
# Executes a command on the files and folders matching a given pattern, in this case, output the last lines of each .foo file in the current folder and subfolders. find . -name "*.foo" -exec tail {} \;
# Outputs all the file names/paths that start with the name "Casey". Searches recursively starting from my current directory (.) # Throws out any error output by sending it to /dev/null find . -name "Casey*" 2>/dev/null
# Finds all files in and under the current directory that contain 'foo' in their name find . -iname '*foo*'
# Searches entire computer starting at root for the file "hashClass.java". Throws out error output by sending it to /dev/null. # If we didn't throw out the error output, we'd get a bunch of "User doesn't have permissions to view directory" errors find / -name "hashClass.java" 2>/dev/null
# directory -> chmod 700 # file executable -> chmod 700 # file -> chmod 600 # You can apply this to directory that needs more secure permission # recursively. Like `~/.ssh`. `+` means run at once, not one by one. Like # `xargs`. find .private -type d -execdir chmod 700 '{}' + \ -or -type f -executable -execdir chmod 777 '{}' + \ -or -type f -execdir chmod 600 '{}' +
# Find and remove empty directories find . -type d -empty -delete # Find and remove empty files find . -type f -empty -delete
# Find and remove files recursively starting in the current directory. find . -name "FILE_TO_FIND" - exec rm -rf {} \; # Especially useful for finding and removing temporary files. # e.g. To remove compiled python files: find . -name '*.pyc' -exec rm -rf {} \;
# Find files that were modified less than 4 days ago and more than two days. Notice that `find -ctime +3 -ctime -4` would give no results. find -ctime +2 -ctime -4
# Find files modified within a specific date range. touch --date "2007-01-01" /tmp/start touch --date "2008-01-01" /tmp/end find /data/images -type f -newer /tmp/start -not -newer /tmp/end
# Searches through my user's "home" directory recursively for the file "hashClass.java", throwing out error output along the way. # Passes the output to grep for case insensitive search. find ~/ 2>/dev/null | grep -i "hashclass.java"
# return all executable files in the current directory find . -maxdepth 1 -perm -111 -type f
# Find all subdirectories that have been created in the last 5 days. find . -type d -ctime -5
# Find all files in home directory that does not match my user/group. # Then change owner:group to my user/group. find ~/ \( -not -group $(id -g) -or -not -user $USER \) -execdir chown $USER: '{}' +
# find last modified file in current directory recursively except directory find ./ -not -type d -printf "%T+ %p\n" | sort | tail -1
# Find all images in and under current directory using regular expression. # Regex should start with .* because find displays full path. find . -regextype awk -regex ".*(jpg|jpeg|png)$"
# count the number of files (-type f will ignore directories) by finding them, then piping them to wc (word count) using -l (lines only) find DIR_NAME -type f | wc -l
# search for file entries only in current director (non-recursive) find -type f -maxdepth 1 # finding directories in current folder, non-recursively find -type d -maxdepth 1
# buscar ficheros binarios no usados en los últimos 100 días find /usr/bin -type f -atime +100 # buscar ficheros creados o cambiados dentro de los últimos 10 días. find /usr/bin -type f -mtime -10
# Buscar todos los archivos con los permisos 777 find . -type f -perm 0777 -print # Buscar todos los archivos sin permisos 777 find / -type f ! -perm 777 # Encuentra todos los archivos de bits SGID cuyos permisos estén configurados en 644. find / -perm 2644 # Encuentra todos los archivos de Sticky Bit cuyo permiso sea 551. find / -perm 1551 # Buscar todos los archivos de conjuntos SUID. find / -perm /u=s # Buscar todos los archivos de conjuntos SGID. find / -perm /g=s # Busca todos los archivos de solo lectura find / -perm /u=r # Buca todos los archivos ejecutables find / -perm /a=x # Busca todos los archivos con permisos 777 y que utilicen el comando # chmod para establecer los permisos a 644 find / -type f -perm 0777 -print -exec chmod 644 {} \; # Busca todos los directorios con permisos 777 y que utilice el comando # para establecer los permisos a 755 find / -type d -perm 777 -print -exec chmod 755 {} \; # Busca los directorios/archivos vacios en una determinada ruta find /tmp -type f -empty find /tmp -type d -empty # Busca los archivos ocultos en un directorio find /tmp -type f -name ".*" # Busca un archivo segun el propietario del mismo find / -user root -name filename.txt # Busque los archivos que pertenezcan al usuario/grupo jmsantiago find /home -user jmsantiago find /home -group jmsantiago # Busque todos los archivos *.jpg que pertenezcan al usuario jmsantiago find /home -user jmsantiago -iname "*.jpg" # Busque los archivos que fueron modificados 50 dias atrás find / -mtime 50 # Busque los archivos que fueron accedidos 50 dias atrás find / -atime 50 # Busque los archivos que fueron modificados hace más de 50 dias # y menos de 100 dias find / -mtime +50 –mtime -100 # Busque los archivos que fueron cambiados en la ultima hora find / -cmin -60 # Busque los archivos que fueron modificados en la ultima hora find / -mmin -60 # Busque los archivos que fueron accedidos en la ultima hora find / -amin -60 # Busque los archivos que pesan 50MB find / -size 50M # Busque los archivos que pesan mas de 50MB y menos de 100MB find / -size +50M -size -100M # Busque los archivos que pesan mas de 100MB y eliminalos find / -size +100M -exec rm -rf {} \; # Busque los archivos jpg que pesen mas de 10M y eliminalos find / -type f -name *.jpg -size +10M -exec rm {} \;
# search directory "emacs*", exclude /mnt directory sudo find / -path /mnt -prune -o -type d -name "emacs*" -print
# Find all images in and under current directory using regular expression. # Regex should start with .* because find displays full path. find . -regextype sed -regex ".*[jpg|jpeg|png]"