将许多.pdf转换为目录中的.txt文件

时间:2012-08-24 07:05:35

标签: pdftotext

我在目录中有超过一千个文件要转换为文本文件。我使用下面的代码首先取出文件名中的空格,然后将文件转换为文本:

!/斌/庆典

   find . -name '*.pdf' | while read file;
   do
    target=`echo "$file" | sed 's/ /_/g'`;
    echo "Renaming '$file' to '$target'";
    mv "$file" "$target";
    chmod 777 *.pdf;
    pdftotext -layout  "$target"  "$target.txt";
   done;

但是,此代码会将我爱你.pdf 等文件转换为 I_love_you.pdf.txt。我想删除最终文件扩展名的.pdf部分。

4 个答案:

答案 0 :(得分:1)

我这样做的首选方法是使用替换来修改扩展名:

pdftotext -layout "$target" "${target/%.pdf/.txt}"

%表示只匹配字符串的末尾。

答案 1 :(得分:0)

你的问题是:

$target = "i_love_you.pdf"

因此

$target.txt = "i_love_you.pdf.txt"

请注意if you don't supply the second parameter to pdftotext,它会默认将 file.pdf 转换为 file.txt ,这似乎完全符合您的要求。

答案 2 :(得分:0)

使用'basename'例如。

basename "i_love_you.pdf" ".pdf" returns "i_love_you"

请参阅How do I remove the file suffix and path portion from a path string in Bash?

答案 3 :(得分:0)

另一种选择可能是:

find ./ -name" * .pdf" -exec pdftotext {} \;