1

テキスト ファイルに変換したいディレクトリに 1,000 を超えるファイルがあります。以下のようなコードを使用して、最初にファイル名のスペースを削除してから、ファイルをテキストに変換します。

!/ビン/バッシュ

   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;

ただし、このコードはI love you.pdfのようなファイルをI_love_you.pdf.txt に変換します最終的なファイル拡張子の .pdf 部分を削除したいと考えています。

4

4 に答える 4

1

これを行う私の好ましい方法は、置換を使用して拡張子を変更することです。

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

%there は、文字列の末尾でのみ一致することを意味します。

于 2012-08-24T07:09:06.887 に答える
0

別のオプションは次のとおりです。

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

于 2016-09-07T13:43:28.913 に答える
0

あなたの問題はこれです:

$target = "i_love_you.pdf"

したがって

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

2 番目のパラメータを に指定しない場合pdftotext、デフォルトでfile.pdffile.txtに変換されることに注意してください。これは、要件に最適と思われます。

于 2012-08-24T07:11:47.973 に答える
0

' basename' を使用します。

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

Bash でパス文字列からファイル サフィックスとパス部分を削除するにはどうすればよいですか?を参照してください。

于 2012-08-24T07:16:53.240 に答える