Usando seu mesmo comando find
, isso retornará as URLs que correspondem à regex:
find . -path "*alder/ * / * .html" -exec grep -oh "http://[^'\"]*" {} +
Ao contrário de find...-print | xargs command...
, essa abordagem funcionará em arquivos cujos nomes contenham espaços em branco ou outros caracteres difíceis
A opção -o
para grep
diz para retornar somente a parte correspondente, não a linha na qual a correspondência está. -h
diz para omitir a impressão dos nomes dos arquivos a partir dos quais as correspondências foram encontradas.
O comando find
no OP corresponde apenas aos arquivos cujos nomes possuem espaços no caminho. Como suspeito que isso não é o que você deseja, aqui está uma forma alternativa do comando find
que encontra todos os arquivos .html
em qualquer profundidade nos subdiretórios do diretório atual cujos nomes terminam em alder
:
find *alder/ -name '*.html' -exec grep -oh "http://[^'\"]*" {} +
Abordagem mais robusta
Para proteger-se contra outros tipos de arquivos html
ruins, a cas sugere que o espaço em branco ou >
também sinalizem o final de um URL e também aceitem https
, bem como http
:
find . -path "*alder/ * / * .html" -exec grep -oEh "https?://[^'\"[:space:]>]*" {} +