Intereting Posts
Как я могу отменить случайную новость в bash? Присоединитесь к интерактивному сеансу процесса, запущенного из rc.local Сложная команда sed с AND / OR / NOT Найти размер файла в unix, используя для цикла Как изменить сообщение об аутентификации пользователя? Существуют ли cygwin vim команды, отличные от обычного vim? Почему постфиксный пользователь не может даже читать свои собственные файлы? Восстановление инкрементного резервного копирования Tar с помощью одной команды Slingshot больше не отвечает на Super + Space Сетевое соединение CentOS разрывается каждые 5 минут Как я могу заставить Cj отправить новую строку в командной строке tmux? Bash: удалить числа (штрих-числовые символы) из строковой переменной Как создать резервную копию всего установленного программного обеспечения / пакетов в AIX? Как настроить постфикс для отправки почты на внешний SMTP-сервер? Как печатать переменные и значения оболочки для их копирования и вставки?

конвертировать большую часть текстовых файлов в pdf с именованием на основе файла заголовка

Зная, что «Как конвертировать из текста в .pdf» уже хорошо сказано здесь ссылка и здесь ссылка , я ищу что-то более конкретное:

Используя Claws-Mail [ сайт ] и подключаемый модуль [ RSSyl ], чтобы читать RSS-каналы, я собрал много текстовых файлов. Это я хочу конвертировать в .pdf-файлы.

Проблема : файлы внутри папок пронумерованы [1, 2, …, 456]. У каждого фида есть своя собственная папка, но внутри у меня есть «только» нумерованные файлы. Каждый файл содержит заголовок [с последующим содержимым сообщения]:

Date: Tue, 5 Feb 2013 19:59:53 GMT From: N/A Subject: Civilized Discourse Construction Kit X-RSSyl-URL: http://www.codinghorror.com/blog/2013/02/civilized-discourse-construction-kit.html Message-ID: <http://www.codinghorror.com/blog/2013/02/civilized-discourse-construction-kit.html> Content-Type: text/html; charset=UTF-8 <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <base href="http://www.codinghorror.com/blog/2013/02/civilized-discourse-construction-kit.html"> </head><body> <p>URL: <a href="http://www.codinghorror.com/blog/2013/02/civilized-discourse-construction-kit.html">http://www.codinghorror.com/blog/2013/02/civilized-discourse-construction-kit.html</a></p> <br> <!-- RSSyl text start --> 

Вопрос : способ конвертировать каждый файл в файл .pdf и переименовать его на основе имени, указанного в разделе « Тема» . Супер-awsome будет преобразовывать и переименовывать этот путь:

"folder.name"_"date"_"file name" с каждой информацией, взятой из данных заголовка. Поскольку это несколько сотен файлов, я ищу способ пакетной обработки.

EDIT: файлы создаются html , но без суффикса .htm[l] .

Если у вас относительно простое дерево файлов, где у вас есть только один уровень каталогов, и где каждый каталог содержит список файлов, но нет подкаталогов, вы должны иметь возможность сделать что-то вроде этого (вы можете вставить это прямо в свой терминал и нажмите Enter ):

 for dir in *; do ## For each directory if [ "$(ls -A "$dir")" ]; then ## If the dir is not empty for file in "$dir"/*; do ## For each file in $dir i=0; ## initialize a counter ## Get the subject sub=$(grep ^Subject: "$file" | cut -d ':' -f 2-); ## get the date, and format it to MMDDYY_Hour:Min:Sec date=$(date -d "$(grep ^Date: $file | cut -d ':' -f 2-)" +%m%d%y_%H:%M:%S); ## the pdf's name will be <directory's name> _ <date> _ <subject> name="$dir"_"$date"_"$sub"; ## if a file of this name exists while [ -e "$dir/$name".pdf ]; do let i++; ## increment the counter name="$dir"_"$date"_"$sub"$i; ## append it to the pdf's name done; wkhtmltopdf "$file" "$dir"/"$name".pdf; ## convert html to pdf done fi done 

ЗАМЕТКИ

  • Для этого решения требуется wkhtmltopdf :

    Простая утилита для преобразования html в pdf с использованием механизма рендеринга webkit и qt.

    В системах на базе Debian вы можете установить их с помощью

     sudo apt-get install wkhtmltopdf 
  • Предполагается, что в каталоге верхнего уровня нет файлов и только желаемых файлов html во всех подкаталогах.

  • Он может обрабатывать имена файлов и каталогов, содержащие пробелы, новые строки и другие неортодоксальные символы.

  • Учитывая файл dir1/foo с содержимым приведенного вами примера, он создаст файл с именем dir1/dir1_020513_20:59:53_Civilized Discourse Construction Kit10.pdf

Вы всегда можете использовать заголовок страницы для соглашения о названии, поэтому он должен быть уникальным.

Данный файл со списком адресов, вот однострочный:

 while read url; do wkhtmltopdf $url "$(curl -s $url | grep -o "<title>[^<]*" | tail -c+8).pdf"; done < urls.lst 

где urls.lst – это ваш файл со списком адресов.