Следующее предложение взято из опции -path руководства по find :
Обратите внимание, что проверка соответствия шаблону применяется ко всему имени файла, начиная с одной из начальных точек, указанных в командной строке.
Это объясняет, почему ваши альтернативные шаблоны поиска ("./abc/*.txt" и "*/abc/*.txt") работают. Ваш оригинальный шаблон поиска ("abc/*.txt") будет работать только в том случае, если корнем поиска является abc:
find abc/ -path "abc/*.txt"
Что касается разницы между "./abc/*.txt" и "*/abc/*.txt" , ни один из них не будет пытаться раскрыть строку перед вызовом find: первый найдет файлы только в каталоге верхнего уровня ./abc/ , но второй найдет файлы в любом подкаталоге abc , например ./def/abc/ , ./ghi/def/abc/ и т. д., а также ./abc/ .