find ожидает путь для поиска в качестве первого аргумента, следовательно:
find * -maxdepth 0 -type d -name "18????_????" | sort -u | tail -2
должно быть:
find . -maxdepth 1 -type d -name "18????_????" | sort -u | tail -2
(при условии, что вы хотите найти текущий путь - иначе замените.
с путем поиска).
Но суть в том, что вы уже используете perl, зачем использовать внешнюю команду, такую как find
?
Вот еще одно решение с использованием модуля Path :: Iterator :: Rule .
use Path::Iterator::Rule;
my @handoffs = Path::Iterator::Rule
->new
->directory # only directories (not files)
->max_depth(1) # do not recurse
->name("18????_????") # match directory name (glob or regex)
->all(".") # search the current path
;