Sunday 6 October 2013

Find Files in LINUX

The find command locates files in many different ways. Unlike the rest of the commands in this section, find does not look at the contents of a file--it only helps you find files that meet certain criteria, such as name, size, age, and type. The general form of the find command is find <starting point> <search criteria> <action>
The starting point is the name of the directory where find should start looking for files. The find command examines all files in this directory (and any subdirectories) to see if they meet the specified search criteria. If any do, findperforms the specified action on each found file. Here are some of the most useful search criteria options:
-name pattern Find files with names that match the pattern.
-size [+|-] n Find files larger or smaller than a certain size.
-atime [+|-] n Find files accessed before or after a certain date.
-mtime [+|-] n Find files modified before or after a certain date.
-type filetype Find only regular files or only directories.
And here are the actions that can be applied to found files:
-print Print just the names of matching files.
-ls Print the names, dates, sizes, and so on of matching files.
-exec command Execute a command with the file name as input.
-ok command Same as -exec, but asks for confirmation first.
To find files larger than 40K and print the file names and details (use a minus sign instead of a plus sign to find files smaller than a certain size), issue this command:
find . -size +40k -ls
-rw-rw-r-- hermie users 56720 Jan 16 12:42 bigfile
-rw-rw-r-- hermie users 415206 Feb 27 21:37 largefile
-rw-rw-r-- hermie users 315428 Jan 07 05:23 hugefile
To find files ending with .dat that are smaller than 100K, enter
find . -name *.txt -size -100k -ls-rw-rw-r-- hermie users 26720 Feb 06 23:52 recipes.txt
-rw-rw-r-- hermie users 506 Feb 18 18:45 poem.txt
To find files that have not been accessed for over 30 days and delete them (by sending their names to the rmcommand), enter
find . -atime +30 -exec rm {} \;
To find directories (starting in the junk directory) and conditionally delete them (by sending their names to the rmdircommand), enter
find junk -type d -ok rmdir {} \;

0 comments:

Post a Comment