Questão Adicione uma tag

do nome do arquivo no Linux


Eu tenho uma pasta com um monte de arquivos html e gostaria de adicionar um

<h1>Filename without extension</h1> 

linha logo após o <body> tag.

Como eu poderia ter um roteiro ou uma frase que seria

  1. Percorra cada arquivo na pasta
  2. Crie a tag H1 com base no nome do arquivo, mas sem a extensão (exemplo: arquivo denominado foobar.html recebeu um <h1>foobar</h1> linha após o <body> linha
  3. Substituir os arquivos

?


0


origem


Qual idioma / ferramenta você está usando? Existem alguns parâmetros no <body> tag? Você poderia mostrar algumas extrações de arquivos e resultado esperado? - Toto
Algumas tags de corpo em alguns arquivos contêm outro texto, como lang = etc. A tag body aparece uma vez em cada arquivo. - To Do


Respostas:


Aqui está um pequeno script perl que faz o trabalho:

#!/usr/bin/perl
use strict;
use warnings;

# Retrieve all html files in an array
my @files = glob '*.html';
# "slurp" mode
undef $/;
# loop over all files
for my $file(@files) {
    # open file in read mode
    open my $fhi, '<', $file or die "Can't open '$file' for reading: $!";
    # retrieve content in a single string
    my $content = <$fhi>;
    close $fhi;
    # remove extension
    (my $without_ext = $file) =~ s/\.[^.]+$//; #/this is a comment for syntaxic color!
    # add h1 tag with filename
    $content =~ s~<body[^>]*>~$&\n<h1>$without_ext</h1>~s;
    # open same file in write mode
    open my $fho, '>', $file or die "Can't open '$file' for writing: $!";
    # write the modified string in the file
    print $fho $content;
}

0



Isso funcionaria um arquivo de cada vez. Eu esclareci meu objetivo na pergunta original. - To Do
@ToDo: Desculpe, foi apenas um teste., Veja minha edição, funciona para todos os arquivos html em um diretório - Toto
Isso não definiria a linha H1 como "título"? Eu quero ser idêntico ao nome do arquivo sem .html - To Do
@ToDo: Me dê um minuto :) - Toto
Salvei o script na mesma pasta que os arquivos html e o executei, mas nada parece acontecer. O script existe imediatamente. - To Do