Sugiro usar
find / '(' -iname '*.htm' -o -iname '*.html' ')' -printf '%h\n' | uniq | xargs -r -d '\n' ls -l
A primeira parte, find / '(' -iname '*.htm' -o -iname '*.html' ')' -printf '%h\n'
, localiza todos os arquivos que terminam com .htm
ou .html
em maiúsculas ou minúsculas (usando padrões glob) e imprime o diretório ( %h
) para cada arquivo encontrado, um diretório por linha.
Por causa de como find
varre os diretórios, há um ou mais diretórios idênticos consecutivos listados; uniq
retém apenas um de cada.
Finalmente, alimentamos a lista de diretórios para xargs
, informando para não executar um comando sem nenhum diretório -r
e que o separador é uma nova linha -d '\n'
. O comando é ls -l
; modifique ao seu gosto.
Se você precisar apenas da lista de diretórios, não do conteúdo desses diretórios, elimine o xargs
part:
find / '(' -iname '*.htm' -o -iname '*.html' ')' -printf '%h\n' | uniq