Professional Documents
Culture Documents
shtml
alvin alexander
1 of 28 5/27/17, 10:35 PM
A collection of Unix/Linux find command examples | alvinalexander.com http://alvinalexander.com/unix/edu/examples/find.shtml
categories
2 of 28 5/27/17, 10:35 PM
A collection of Unix/Linux find command examples | alvinalexander.com http://alvinalexander.com/unix/edu/examples/find.shtml
case-insensitive searching
--------------------------
find . -iname foo
find . -iname foo -type d
find . -iname foo -type f
3 of 28 5/27/17, 10:35 PM
A collection of Unix/Linux find command examples | alvinalexander.com http://alvinalexander.com/unix/edu/examples/find.shtml
4 of 28 5/27/17, 10:35 PM
A collection of Unix/Linux find command examples | alvinalexander.com http://alvinalexander.com/unix/edu/examples/find.shtml
On a related note, don’t forget the locate command. It keeps a database on your
Unix/Linux system to help find files very fast:
locate command
--------------
locate tomcat.sh # search the entire filesystem for 'tomcat.sh' (uses the locate
locate -i spring.jar # case-insensitive search
If you know of any more good find commands to share, please leave a note in the
Comments section below.
The remaining sections on this page describe more fully the commands just shown.
5 of 28 5/27/17, 10:35 PM
A collection of Unix/Linux find command examples | alvinalexander.com http://alvinalexander.com/unix/edu/examples/find.shtml
This first Linux find example searches through the root filesystem ("/") for the file named
Chapter1. If it finds the file, it prints the location to the screen.
On Linux systems and modern Unix system you no longer need the -print option at the
end of the find command, so you can issue it like this:
The -type f option here tells the find command to return only files. If you don’t use it,
the find command will returns files, directories, and other things like named pipes and
device files that match the name pattern you specify. If you don't care about that, just leave
the -type f option off your command.
This next find command searches through only the /usr and /home directories for any
file named Chapter1.txt:
To search in the current directory — and all subdirectories — just use the . character to
reference the current directory in your find commands, like this:
This next example searches through the /usr directory for all files that begin with the
letters Chapter, followed by anything else. The filename can end with any other
combination of characters. It will match filenames such as Chapter, Chapter1,
Chapter1.bad, Chapter-in-life, etc.:
6 of 28 5/27/17, 10:35 PM
A collection of Unix/Linux find command examples | alvinalexander.com http://alvinalexander.com/unix/edu/examples/find.shtml
This next command searches through the /usr/local directory for files that end with the
extension .html. These file locations are then printed to the screen:
Every option you just saw for finding files can also be used on directories. Just replace the
-f option with a -d option. For instance, to find all directories named build under the
current directory, use this command:
To find all files that don't match a filename pattern, use the -not argument of the find
7 of 28 5/27/17, 10:35 PM
A collection of Unix/Linux find command examples | alvinalexander.com http://alvinalexander.com/unix/edu/examples/find.shtml
That generates a list of all files beneath the current directory whose filename DOES NOT
end in .html, so it matches files like *.txt, *.jpg, and so on.
You can combine the Linux find and grep commands to powerfully search for text strings
in many files.
This next command shows how to find all files beneath the current directory that end with
the extension .java, and contain the characters StringBuffer. The -l argument to the
grep command tells it to just print the name of the file where a match is found, instead of
printing all the matches themselves:
(Those last few characters are required any time you want to exec a command on the files
that are found. I find it helpful to think of them as a placeholder for each file that is found.)
This next example is similar, but here I use the -i argument to the grep command, telling
it to ignore the case of the characters string, so it will find files that contain string,
String, STRING, etc.:
This command searches through the /usr/local directory for files that end with the
extension .html. When these files are found, their permission is changed to mode 644
8 of 28 5/27/17, 10:35 PM
A collection of Unix/Linux find command examples | alvinalexander.com http://alvinalexander.com/unix/edu/examples/find.shtml
(rw-r--r--).
This find command searches through the htdocs and cgi-bin directories for files that
end with the extension .cgi. When these files are found, their permission is changed to
mode 755 (rwxr-xr-x). This example shows that the find command can easily search
through multiple sub-directories (htdocs, cgi-bin) at one time:
From time to time I run the find command with the ls command so I can get detailed
information about files the find command locates. To get started, this find command will
find all the *.pl files (Perl files) beneath the current directory:
./news/newsbot/old/3filter.pl
./news/newsbot/tokenParser.pl
./news/robonews/makeListOfNewsURLs.pl
That's nice, but what if I want to see the last modification time of these files, or their
filesize? No problem, I just add the ls -ld command to my find command, like this:
9 of 28 5/27/17, 10:35 PM
A collection of Unix/Linux find command examples | alvinalexander.com http://alvinalexander.com/unix/edu/examples/find.shtml
The "-l" flag of the ls command tells ls to give me a "long listing" of each file, while the -d
flag is extremely useful in this case; it tells ls to give me the same output for a directory.
Normally if you use the ls command on a directory, ls will list the contents of the directory,
but if you use the -d option, you'll get one line of information, as shown above.
Be very careful with these next two commands. If you type them in wrong, or make the
wrong assumptions about what you're searching for, you can delete a lot of files very fast.
Make sure you have backups and all that, you have been warned.
Here's how to find all files beneath the current directory that begin with the letters 'Foo'
and delete them.
This one is even more dangerous. It finds all directories named CVS, and deletes them and
their contents. Just like the previous command, be very careful with this command, it is
dangerous(!), and not recommended for newbies, or if you don't have a backup.
The syntax to find multiple filename extensions with one command looks like this:
10 of 28 5/27/17, 10:35 PM
A collection of Unix/Linux find command examples | alvinalexander.com http://alvinalexander.com/unix/edu/examples/find.shtml
Just keep adding more "-o" (or) options for each filename extension. Here's a link to
To perform a case-insensitive search with the Unix/Linux find command, use the -iname
option instead of -name. For example, if you want to search for all files and directories
named foo, FOO, or any other combination of uppercase and lowercase characters
beneath the current directory, use this command:
To find all files and directories that have been modified in the last seven days, use this
find command:
find . -mtime -7
To limit the output to just files, add the -type f option as shown earlier:
11 of 28 5/27/17, 10:35 PM
A collection of Unix/Linux find command examples | alvinalexander.com http://alvinalexander.com/unix/edu/examples/find.shtml
If you’re just looking for a file by name, and you want to be able to find that file even faster
than you can with the find command, take a look at the Linux locate command. The locate
command keeps filenames in a database, and can find them very fast.
For more details on the find command, check out our online version of the find man page.
Also, if you have any favorite Linux and Unix find commands you’d like to share, please
use the comment form below.
There’s just one person behind this website; if this article was helpful (or interesting), I’d
appreciate it if you’d share it. Thanks, Al.
related
12 of 28 5/27/17, 10:35 PM
A collection of Unix/Linux find command examples | alvinalexander.com http://alvinalexander.com/unix/edu/examples/find.shtml
what’s new
13 of 28 5/27/17, 10:35 PM
A collection of Unix/Linux find command examples | alvinalexander.com http://alvinalexander.com/unix/edu/examples/find.shtml
I just had a problem with a Bugzilla installation (on an intranet), and finally gave up
on trying to fix all the permission problems, and just made all the bugzilla
subdirectories 775 like this:
14 of 28 5/27/17, 10:35 PM
A collection of Unix/Linux find command examples | alvinalexander.com http://alvinalexander.com/unix/edu/examples/find.shtml
I've always been lazy in this situation and done something as follows. First, create a
list of all the files you want to remove, putting that list into a file:
But a quick warning: I haven't tested that for syntax errors, but I think it's right.
EXAMPLES
Find files named core in or below the directory /tmp and delete them.
Note that this will work incorrectly if there are any filenames containing
newlines or spaces.
Find files named core in or below the directory /tmp and delete them,
processing filenames in such a way that file or directory names containing
spaces or new-lines are correctly handled.
No matter, which approach, be careful, and try a test first (maybe using the echo
command) to make sure it works was expected..
15 of 28 5/27/17, 10:35 PM
A collection of Unix/Linux find command examples | alvinalexander.com http://alvinalexander.com/unix/edu/examples/find.shtml
I'll add a new section to this article with this update, but to perform a case-insensitive
search, use the -iname option instead of -name. So, to search for all files and
directories named foo, FOO, or any other combination of uppercase and lowercase
characters beneath the current directory, use this command:
16 of 28 5/27/17, 10:35 PM
A collection of Unix/Linux find command examples | alvinalexander.com http://alvinalexander.com/unix/edu/examples/find.shtml
The -type d option tells find to just look for directories, and the wildcard pattern
"[A-Z]*" says "Search for any directory whose name contains one or more
uppercase characters."
good one!!!
17 of 28 5/27/17, 10:35 PM
A collection of Unix/Linux find command examples | alvinalexander.com http://alvinalexander.com/unix/edu/examples/find.shtml
18 of 28 5/27/17, 10:35 PM
A collection of Unix/Linux find command examples | alvinalexander.com http://alvinalexander.com/unix/edu/examples/find.shtml
Is there any way to set a "-quiet" type flag to ignore all the error lines? I get more
"Permission denied" lines than I do results to my find query. I don't see anything in
the man page. I thought maybe I could run the output through grep -v "Permission
denied" but that fails to work.
Often I'd like to know exactly WHERE the files that get found reside. the -print
(default) command only gives the file name. The -ls flag prints out a bunch of data,
including size and full path. You can then use sed/awk (if you know how - I suck at
this too) to pull out specific data from what find returns.
Another cool thing to do is run your find output through wc -l to count all the found
files. e.g.:
find ~music -type f -iname *.mp3 | wc -l
will count all the mp3 files in the music user's home and subdirs.
19 of 28 5/27/17, 10:35 PM
A collection of Unix/Linux find command examples | alvinalexander.com http://alvinalexander.com/unix/edu/examples/find.shtml
There is a -[no]warn flag, though I've never used it. The problem with using grep in
this case is that the errors are probably coming out of find on the STDERR stream
instead of STDOUT, so you'll need to get rid of them something like this:
If you haven't used it before, the "2>" symbol lets you redirect STDERR output.
Cheers.
Thanks, you're right, I totally forgot to include an "ls" example. I'll try to add one here
this morning. Usually I use ls with the -ld option, like this:
20 of 28 5/27/17, 10:35 PM
A collection of Unix/Linux find command examples | alvinalexander.com http://alvinalexander.com/unix/edu/examples/find.shtml
Simply ultimate..quite impressed by the way you present the usage of the command.
Well done.
21 of 28 5/27/17, 10:35 PM
A collection of Unix/Linux find command examples | alvinalexander.com http://alvinalexander.com/unix/edu/examples/find.shtml
Thanks :)
Can someone help me in find files with multiple extensions like .sh or .c or .txt
for ex-
find . -name "*.(c|sh|txt)"
The syntax to find multiple filename extensions with one command looks like this:
Just keep adding more "-o" (or) options for each filename extension. Here's a link to
.
22 of 28 5/27/17, 10:35 PM
A collection of Unix/Linux find command examples | alvinalexander.com http://alvinalexander.com/unix/edu/examples/find.shtml
Hi
Can anyone help me to find a directory using "find command" and list the contents of
that directory using ls command.
Eg. Suppose say I want to find the directory called "mosra" in the present workign
directory. This directory may be present anywhere in the path and I want to list ONLY
the directories present in that "mosra" directory.
/nfs/iind/home/sshirnix/public/scripts/perl_scripts
23 of 28 5/27/17, 10:35 PM
A collection of Unix/Linux find command examples | alvinalexander.com http://alvinalexander.com/unix/edu/examples/find.shtml
However ... a problem with that command is that it's like issuing this command from
the directory above the mosra directory:
ls mosra
That command will list all of the files in the mosra folder, which is probably what
you're seeing. To eliminate the output of those filenames, add the -d flag to your ls
command:
However, at this point, unless you want more detailed information about the mosra
folder, such as an ls -l command, there's no point in using ls; just use this
command:
(If you're on an older Unix system you may also need the -print argument.)
24 of 28 5/27/17, 10:35 PM
A collection of Unix/Linux find command examples | alvinalexander.com http://alvinalexander.com/unix/edu/examples/find.shtml
Hello Alvin,
Thank you very much for the reply and for yor time.
I am grateful to you for your reply.
The command:
find . -name mosra -type d -exec ls {} \;
lists all the directories and files in mosra directory found. However I want to list
ONLY the directories that are present in the mosra directory once it is found.
The command:
find . -name mosra -type d -exec ls -d {} \;
gives the relative path of the mosra directory not the contents in mosra directory. In
fact I want only the directories present in the mosra not the files.
Basically I want the directories present in mosra after finding it in the current path.
Sudhakar
25 of 28 5/27/17, 10:35 PM
A collection of Unix/Linux find command examples | alvinalexander.com http://alvinalexander.com/unix/edu/examples/find.shtml
Depending on your exact needs you may want to do that in a couple of lines in a shell
script, but you can also get a listing of all directories under the mosra directory by
executing one find command inside the other, like this:
The content of this field is kept private and will not be shown publicly.
Homepage
Subject
Comment
26 of 28 5/27/17, 10:35 PM
A collection of Unix/Linux find command examples | alvinalexander.com http://alvinalexander.com/unix/edu/examples/find.shtml
Links:
front page me on twitter search privacy
java
java applets
java faqs
misc content
java source code
test projects
lejos
Perl
perl faqs
programs
perl recipes
perl tutorials
Unix
man (help) pages
unix by example
tutorials
source code
warehouse
java examples
27 of 28 5/27/17, 10:35 PM
A collection of Unix/Linux find command examples | alvinalexander.com http://alvinalexander.com/unix/edu/examples/find.shtml
drupal examples
misc
privacy policy
terms & conditions
subscribe
unsubscribe
wincvs tutorial
function point
analysis (fpa)
fpa tutorial
Other
mobile website
rss feed
my photos
life in alaska
how i sold my business
living in talkeetna, alaska
my bookmarks
inspirational quotes
source code snippets
28 of 28 5/27/17, 10:35 PM