Bash
將大量文本文件轉換為 pdf,並根據標頭檔命名
知道“如何從文本轉換為 .pdf”在此處連結和此處連結已經得到很好的回答,我正在尋找更具體的內容:
使用 Claws-Mail [ website ] 和 Plug-In [ RSSyl ] 來閱讀 RSS feed 我收集了很多文本文件。這些我想轉換成 .pdf 文件。
問題:文件夾內的文件有編號
$$ 1, 2, …, 456 $$. 每個提要都有自己的文件夾,但在裡面我有“只是”編號的文件。每個文件都包含一個標題$$ followed by the message’s content $$:
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 -->
問題:一種將每個文件轉換為
"folder.name"_"date"_"file name"
從標題數據中獲取的每個資訊。由於有幾百個文件,我正在尋找一種批處理方式。文件已
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
:使用 webkit 渲染引擎和 qt 將 html 轉換為 pdf 的簡單 shell 實用程序。
在基於 Debian 的系統上,您可以使用
sudo apt-get install wkhtmltopdf
- 它假定頂級目錄中沒有文件,所有子目錄中只有所需的 html 文件。
- 它可以處理包含空格、換行符和其他非正統字元的文件和目錄名稱。
- 給定一個包含
dir1/foo
您發布的範例內容的文件,它將創建一個名為dir1/dir1_020513_20:59:53_Civilized Discourse Construction Kit10.pdf