Вот несколько возможных команд, включая пример вывода
Самый простой:
$ find / -iname "*.htm*"
foo/a.HTM
foo/b.HTML
foo/b.html
foo/x.htmx
foo/a.htm
bar/a.htm
-iname
означает поиск файлов, соответствующих glob, и нечувствительность к регистру. Проблема в том, что glob *. Htm *
также находит htmx
.
Чтобы предотвратить нахождение htmx
, вам нужно разделить глобус:
$ find / -iname "*.htm" -o -iname "*.html"
foo/a.HTM
foo/b.HTML
foo/b.html
foo/a.htm
bar/a.htm
Или использовать команду grep, которая может использовать регулярное выражение:
$ find / | grep -i "\.html*$"
foo/a.HTM
foo/b.HTML
foo/b.html
foo/a.htm
bar/a.htm
Обратите внимание, что регулярное выражение отличается от глобуса. В частности, точка (.
) и звезда ( *
) имеют очень разные значения в glob и regex.
См. https://en.wikipedia.org/wiki/Glob_ (программирование) #Compared_to_regular_expressions для получения дополнительной информации.