У меня есть папка с кучей HTML-файлов, и я хочу добавить

<h1>Filename without extension</h1>

строка сразу после <body> .

Как я мог иметь сценарий или однострочник, который бы

  1. Просмотреть каждый файл в папке
  2. Создайте тег H1 на основе имени файла файла, но без расширения (пример: файл с именем foobar.html получил строку <h1>foobar</h1> после строки <body>
  3. Перезаписать файлы

?

1 ответ1

0

Вот небольшой скрипт на Perl, который делает эту работу:

#!/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;
}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .