find -maxdepth 0 not returning me any output

Let us suppose that we have file1 in the current directory. Then:

$ find . -maxdepth 0 -name "file1"
$ find . file1 -maxdepth 0 -name "file1"
file1

Now, let's look at what the documentation states:

-maxdepth 0 means only apply the tests and actions to the command line arguments.

In my first example above, only the directory . is listed on the command line. Since . does not have the name file1, nothing is listed in the output. In my second example above, both . and file1 are listed on the command line and, because file1 matches -name "file1", it was returned in the output

In other words, -maxdepth 0 means do not search directories or subdirectories. Instead only look for a matching file among those explicitly listed on the command line.

In your examples, only directories were listed on the command line and none of them were named file1. Hence, no output.

In general, many files and directories can be named on the command line. For example, here we try a find command with 11 files and directories on the command line:

$ ls
d1  file1  file10  file2  file3  file4  file5  file6  file7  file8  file9
$ find d1 file1 file10 file2 file3 file4 file5 file6 file7 file8 file9 -maxdepth 0 -name "file1"
file1

Overlapping paths

Consider:

$ find . file1 -maxdepth 0 -iname file1
file1
$ find . file1 file1 -maxdepth 0 -iname file1
file1
file1
$ find . file1 file1 -maxdepth 1 -iname file1
./file1
file1
file1

Apparently, as Ramesh points out, find will follow each path specified on the command line and look for matches even if the paths lead to the same file, as in . file or even if the paths are exact duplicates, as in file1 file1.

Tags:

Find