perl -ne 'END { print join("\n", sort keys %found)} if (/PATTERNTOMATCH/) {$found{$ARGV[0]}=1;}' *
Моя первая попытка была:
perl -ne 'if (/PATTERNTOMATCH/) {print "$ARGV[0]\n";}' *
но это вывело бы несколько имен файлов, если они совпадают в файле более одного раза. Чтобы перестать показывать дубли, я попытался использовать «последний», чтобы выйти из неявного цикла, но, похоже, это не сработало. Таким образом, верхний пример помещает имя файла в хеш всякий раз, когда он находит совпадение (если (/ PATTERNTOMATCH ...), а затем в блоке END (который находится в начале!), Он печатает ключи из хэша (чтобы удалить повторяющиеся имена файлов).
Боюсь, это немного ужасно. Я бы придерживался модуля CPAN, упомянутого DavidO выше