Unix command to find a file in a directory and subdirectory

ADVERTISEMENTS



Syntax

I think I lost (or forgot the file location) a file named toms-first-birthday.mp4 on my Unix based system. Is there is a Unix bash shell command to find a file called “toms-first-birthday.mp4” in a directory and subdirectories?You need to use the find command on a Linux or Unix-like system to search through directories for files.

The syntax is

find /search/directory/ -name "matching file search criteria" -actions

find /dir/to/search -name "pattern" -print

find /dir/to/search -name "file-to-search" -print

find /dir/to/search -name "file-to-search" -print [-action]

The find command will begin looking in the /dir/to/search/ and proceed to search through all accessible subdirectories. The filename is usually specified by the -name option. You can use other matching criteria too:

-name file-name – Search for given file-name. You can use pattern such as *.c

– Search for given file-name. You can use pattern such as *.c -iname file-name – Like -name, but the match is case insensitive. For example, the patterns `fo*’ and `F??’ match the file names `Foo’, `FOO’, `foo’, `fOo’, etc. The pattern `*foo*` will also match a file called ‘.foobar’.

– Like -name, but the match is case insensitive. For example, the patterns `fo*’ and `F??’ match the file names `Foo’, `FOO’, `foo’, `fOo’, etc. The pattern `*foo*` will also match a file called ‘.foobar’. -user userName – The file’s owner is userName

– The file’s owner is userName -group groupName – The file’s group owner is groupName

– The file’s group owner is groupName -type N – Search by file type. N can be any one of the following:

– Search by file type. N can be any one of the following: b : block (buffered) special

: block (buffered) special

c : character (unbuffered) special

: character (unbuffered) special

d : directory

: directory

p : named pipe (FIFO)

: named pipe (FIFO)

f : regular file

: regular file

l : symbolic link; this is never true if the -L option or the -follow option is in effect, unless the symbolic link is broken. If you want to search for symbolic links when -L is in effect, use -xtype .

: symbolic link; this is never true if the -L option or the -follow option is in effect, unless the symbolic link is broken. If you want to search for symbolic links when is in effect, use .

s : socket

: socket

D : door (Solaris Unix)

The default action is to display the file name when criteria is matched. You can specify the following actions when file found:

-print : Show pathnames of matching files.

: Show pathnames of matching files. -exec cmd {} + : Run command cmd on a file.

: Run command cmd on a file. -ls : List current file in ls -dils format on screen.

: List current file in format on screen. -delete : Delete file.

Unix find command examples

To find and report toms-first-birthday.mp4 file in your HONE directory, enter:

$ find $HOME -name "toms-first-birthday.mp4" -print

To find and report all mp4 files starting at the /home/vivek/ directory, enter:

$ find /home/vivek/ -name "*.mp4" -print

To find and report all mp4 files starting at the /home/vivek/ and /tmp/ directory, enter:

$ find /home/vivek/ /tmp/ -name "*.mp4" -print

For more info, see the Unix find command manual page:

$ man find

A note about locate command on Linux/Unix

To find files by name use locate command:

locate file-name

locate pattern

locate [option] pattern

locate toms-first-birthday.mp4 | more

locate -b '\toms-first-birthday.mp4'

locate *.sh | more

Sample outputs:

