Main Tutorials

How to find a file in linux

In *nix, you can use the find command to find a file easily.

$find {directory-name} -name {filename}

1. Find a file in the root directory
If you have no idea where the file is located, you can search the entire system via the “/” root directory. Below example shows you how to find a file, named testing.txt in the entire system drive.

P.S To find in “/” root, you need permission, just issue sudo.


$ sudo find / -name 'testing.txt'

find: /dev/fd/3: Not a directory
find: /dev/fd/4: Not a directory
/Users/mkyong/Documents/workspace/JavaTesting/testing.txt
/Users/mkyong/testing.txt

2. Find files in a specified directory
Find file testing.txt in directory /Users/mkyong and all its subdirectory..


$ sudo find /Users/mkyong -name 'testing.txt'
/Users/mkyong/Documents/workspace/JavaTesting/testing.txt
/Users/mkyong/testing.txt

About Author

author image
Founder of Mkyong.com, love Java and open source stuff. Follow him on Twitter. If you like my tutorials, consider make a donation to these charities.

Comments

Subscribe
Notify of
4 Comments
Most Voted
Newest Oldest
Inline Feedbacks
View all comments
tmichaud
11 years ago

find can do a lot more than merely print files.

find . -name 
find . -exec grep -Hi "text" {} \;
find. -ctime (can't remember parameters off the top of my head)
etc.
walter
11 years ago

locate is a better choice sometimes — you run updatedb via root cron to create a hashed db of all files on the box. Then to find a file – “locate file.name or part-of-file-name” and you can pipe the results into a filter — for example a file name in a bin dir –
“locate file.name | grep bin” or maybe list hits via ls -l for greater detail – “ls -l `locate file.name | grep bin` . find is a more cpu intensive utility – locate uses find too — but the hashed db may be accessed by many users rather than a separate find for each search.

gary knott
11 years ago
Reply to  walter

locate myfile | ls -l fails because locate outputs a list of LF-terminated file names.
How do we strip-out the LF’s so this will work? Something like:
locate myfile | stripLF | ls -l would be fine if there were such a thing.
(is there?)

Owen
11 years ago
Reply to  gary knott

It seems that you can do it with #locate myfile | xargs ls -l