web-dev-qa-db-ja.com

1つのコマンドですべてのpdfファイルをテキスト(フォルダ内)に変換するにはどうすればよいですか?

私はpdfファイルを次のように1つずつテキストファイルに変換できることを知っています:

$ pdftotext filename.pdf

しかし、すべてを変換するために個別のファイル名を指定せずにその変換を行う単一のコマンドはありますか?

ここ、Wikipedia 、「複数のファイルを変換するためのワイルドカード(*)、たとえば$ pdftotext * pdf」は、pdftotextが1つのファイル名しか想定していないため使用できない」

17
user47206

以下は、現在のディレクトリ内のすべてのファイルを変換します。

for file in *.pdf; do pdftotext "$file" "$file.txt"; done
23
Sam
ls *.pdf | xargs -n1 pdftotext

xargsは、多くの場合、同じコマンドを複数回実行し、そのたびにわずかな変更を行う簡単なソリューションです。 -n1オプションは、一度に1つのpdfファイルのみがpdftotextに渡されるようにします。

編集:ファイル名などにスペースが心配な場合は、この代替手段を使用できます。

find . -name '*.pdf' -print0 | xargs -0 -n1 pdftotext
8
Ryan Thompson

bashスクリプトを書く

for f in *.pdf; do
  pdftotext "$f"
done

または、次のように1行のコマンドで入力します。

for f in *.pdf; do pdftotext "$f"; done

これがお役に立てば幸いです。これをテストするための.pdfの大規模なグループはありませんが、この戦略を使用して.flacファイルを.oggファイルに変換します。

2
cprofitt
for file in *.pdf; do pdftotext "$file" "$file.txt"; done

これはsample.pdf.txtを出力します。

User2357111317が示唆するように、これを使用してみました。また、テキストのレイアウトを保持するために-layoutを含めました

for file in *.pdf; do pdftotext -layout "$file"; done
0
hinky

私は最初に SamRyan Thompson に感謝しなければなりません-私の答えはここに彼らの解決策を追加する可能性に関するバリエーションに過ぎませんThunarのカスタムアクション:

そのため、あらゆるターミナルコマンドと同様に、フォルダー内のすべてのpdfファイルをテキストに変換するコマンドをThunarファイルマネージャーのカスタムアクションのリストに入れることができます

enter image description here

enter image description here

enter image description here

そこにあるコマンドはfind . -name '*.pdf' -print0 | xargs -0 -n1 pdftotextで、( Ryan Thompson から来ています)これは私が使用したいものですが、厄介なターンがあります...以下を参照してください...

enter image description here

enter image description here

...これは面白いコマンドであり、注意して使用する必要があります:発射されるフォルダ内のすべてのpdfをテキストに変換するように作られているので、ホームフォルダで誤って発射されると、いくつかの不要な効果:PDFはすべてテキストに変換されます!

(私はこのようにテストしました:デスクトップ上に "test"というフォルダーを作成し、その中に同じpdfを含むpdfファイルとフォルダー内の一連のフォルダー(/Desktop/test/a/b/c/e/f/g/h/i)を作成しました。そのコマンドを/Desktop/testはすべてのPDFを「i」フォルダー内のPDFに変換しました。

(このリスクを回避するためにこのコマンドを調整する方法についてのコメントを歓迎します。)

これを Sam からのもう1つ(for file in *.pdf; do pdftotext "$file" "$file.txt"; done)に置き換えると、問題は回避されます。

しかし、特定のケースでは、ライアンのソリューションが何をするのかを正確に望むかもしれません!

0
user47206