How to find files in linux?

Linux OS Topics
Post Reply
User avatar
Saman
Lieutenant Colonel
Lieutenant Colonel
Posts: 828
Joined: Fri Jul 31, 2009 10:32 pm
Location: Mount Lavinia

How to find files in linux?

Post by Saman » Thu Mar 22, 2012 1:37 am

Code: Select all

$ find /home/rovan -name 'index*'
$ find /home/rovan -iname 'index*'
The 1st command would find files having the letters index as the beginning of the file name. The search would be started in the directory /home/rovan and carry on within that directory and its subdirectories only.
The 2nd command would search for the same, but the case of the file name wouldn't be considered. So all files starting with any combination of letters in upper and lower case such as INDEX or indEX or index would be returned.

Code: Select all

$ find -name met*
The above command would start searching for the files that begin with the letters 'met' within the current directory and the directories that are present within the current directory. Since the directory is not specified as the the second parameter, Linux defaults to using the current directory as the one to start the search in.

Code: Select all

$ find /mp3collection -name '*.mp3' -size -5000k
$ find / -size +10000k
The 1st command would find within a directory called /mp3collection, only those mp3 files that have a size less than 5000 Kilobytes ( < 5MB)
The 2nd command would search from the / directory for any file that is larger than 10000k (> 10MB)

Code: Select all

$ find /home/rovan -amin -10 -name '*.c'
$ find /home/rovan -atime -2 -name '*.c'
$ find /home/rovan -mmin -10 -name '*.c'
$ find /home/rovan -mtime -2 -name '*.c'
The 1st command searches for those files that are present in the directory /home/rovan and its subdirectories which end in .c and which have been accessed in the last 10 minutes.
The 2nd command does the same but searches for those files that have been accessed in the last 10 hours.
The 3rd and the 4th commands do the same as the 1st and 2nd commands but they search for modified files rather than accessed files. Only if the contents of the files have been modified, would their names be returned in the search results.

Code: Select all

$ find / -mount -name 'win*'
This command searches for files starting with the letters 'win' in their file names. The only difference is that the mounted file systems would not be searched for this time. This is useful when you have your Windows partitions mounted by default. And a search for 'win' might return many files on those partitions, which you may not be really interested in. This is only one use of -mount parameter.

Code: Select all

$ find /mp3-collection -name 'MLTR*' -and -size +10000k
$ find /mp3-collection -size +10000k ! -name "MLTR*"
$ find /mp3-collection -name 'MLTR*' -or -size +10000k
Boolean operators such as AND, OR and NOT make find an extremely useful tool.
The 1st command searches within the directory /mp3-collection for files that have their names beginning with 'MLTR' and whose size is greater than 10000 kilobytes (> 10 MB).
The 2nd command searches in the same directory as above case but only for files that are greater than 10MB, but they should not have 'MLTR' as the starting of their file names.
The 3rd command searches in the same directory for files that begin with 'MLTR' in their names or all the files that are greater than 10 MB in size.

The exec option is probably the most important feature of the find tool. The exec command allows you to execute a particular command on the results of the find command. A simple demonstration of this feature is shown below. Its up to your imagination to make maximum use of this feature. Suppose you wanted to see the details of the files (read, write, execute permission, file size, owner etc..) that have been returned as a search result you could do the following

Code: Select all

$ find / - name 'MLTR*' -exec ls -l {\}\ \;
This command would find all the files on your system that begin with the letters 'MLTR' and would then execute the 'ls -l' command on these files. So basically you would be able to see the details of the files that were returned according to your search criteria.

The words following the -exec option is the command that you want to execute i.e. ls -l in this case.
{\}\ is basically an indicator that the file names returned by the search should be substituted here.
\; is the terminating string, and is required at the end of the command
Post Reply

Return to “Linux”