다수의 텍스트 파일을 pdf로 변환하고 헤더 파일에 따라 이름을 지정합니다.

다수의 텍스트 파일을 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: 각 파일을 파일로 변환하고, 아래 이름에 맞게 이름을 바꾸는 방법주제. 정말 멋진 점은 다음과 같이 변환하고 이름을 바꾸는 것입니다.

"folder.name"_"date"_"file name"각 정보는 헤더 데이터에서 가져옵니다. 수백개의 파일이 있어서 일괄 처리할 수 있는 방법을 찾고 있습니다.

파일의 html형식이 지정되었지만 접미사가 없습니다 .htm[l].

답변1

한 수준의 디렉터리만 있는 비교적 간단한 파일 트리가 있고 각 디렉터리에 파일 목록이 포함되어 있지만 하위 디렉터리는 없는 경우 다음과 같은 작업을 수행할 수 있습니다(터미널에 직접 붙여넣고 을 클릭할 수 있음 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:

    웹킷 렌더링 엔진과 qt를 사용하여 html을 pdf로 변환하는 간단한 쉘 유틸리티입니다.

    Debian 기반 시스템에서는 다음 명령을 사용하여 설치할 수 있습니다.

    sudo apt-get install wkhtmltopdf
    
  • 거기에 있다고 가정합니다파일 없음최상위 디렉토리에필수 html 파일만 필요합니다.모든 하위 디렉터리에 있습니다.

  • 공백, 개행 및 기타 비정통 문자가 포함된 파일 및 디렉터리 이름을 처리할 수 있습니다.

  • dir1/foo귀하가 게시한 샘플 콘텐츠가 포함된 파일이 주어지면 다음과 같은 파일이 생성됩니다.dir1/dir1_020513_20:59:53_Civilized Discourse Construction Kit10.pdf

답변2

명명 규칙에 따라 언제든지 페이지 제목을 사용할 수 있으므로 고유해야 합니다.

주소 목록이 포함된 파일이 주어지면 다음은 한 줄입니다.

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

urls.lstURL 목록이 포함된 파일은 어디에 있습니까?

관련 정보