Which command finds files under /data whose names end in .txt, .TXT or .Txt in a single search?

LPIC-1 Exam 101-500, objective 103. GNU and Unix commands easy

Draft — not checked yet. This question was written from the published exam objectives and cites the clause it comes from, but nobody has yet read it against that clause and signed for it.

It is kept out of search results and out of mock exams until they have. Read the source below before you take the answer as settled.

The options

Not correct find /data -path '*.txt'

Wrong for this purpose. -path matches the pattern against the whole path find prints, and it is still case-sensitive; -ipath is its case-insensitive form.

Not correct find /data -name '*.txt'

Wrong. -name matches the file name case-sensitively, so it finds only the lowercase .txt files.

Correct find /data -iname '*.txt'

Correct. -iname is the case-insensitive form of -name, so all three spellings match.

Not correct find /data -type f '*.txt'

Wrong. -type f restricts results to regular files, but the trailing '*.txt' is not a test at all, so find rejects it as a stray argument (GNU find: 'paths must precede expression'). Nothing filters on the name.

Why

find tests the file NAME with -name and -iname, and the full path with -path and -ipath; the i-forms ignore case. Always quote the pattern, otherwise the shell expands the glob against the current directory before find ever sees it. Other tests you should know: -type (f, d, l), -size, -mtime, -user, and the actions -delete and -exec.

Where this comes from

Cited
LPI exam objective 103.3
What it says
Find files by name, including case-insensitive matching.

Practise this

Reading one question is not practice. The trainer will draw a set from objective 103 and space the ones you get wrong.

Practise LPIC-1 Exam 101-500