私はpdfファイルを次のように1つずつテキストファイルに変換できることを知っています:
$ pdftotext filename.pdf
しかし、すべてを変換するために個別のファイル名を指定せずにその変換を行う単一のコマンドはありますか?
ここ、Wikipedia 、「複数のファイルを変換するためのワイルドカード(*)、たとえば$ pdftotext * pdf」は、pdftotextが1つのファイル名しか想定していないため使用できない」
以下は、現在のディレクトリ内のすべてのファイルを変換します。
for file in *.pdf; do pdftotext "$file" "$file.txt"; done
ls *.pdf | xargs -n1 pdftotext
xargs
は、多くの場合、同じコマンドを複数回実行し、そのたびにわずかな変更を行う簡単なソリューションです。 -n1
オプションは、一度に1つのpdfファイルのみがpdftotextに渡されるようにします。
編集:ファイル名などにスペースが心配な場合は、この代替手段を使用できます。
find . -name '*.pdf' -print0 | xargs -0 -n1 pdftotext
bashスクリプトを書く
for f in *.pdf; do
pdftotext "$f"
done
または、次のように1行のコマンドで入力します。
for f in *.pdf; do pdftotext "$f"; done
これがお役に立てば幸いです。これをテストするための.pdfの大規模なグループはありませんが、この戦略を使用して.flacファイルを.oggファイルに変換します。
for file in *.pdf; do pdftotext "$file" "$file.txt"; done
これはsample.pdf.txtを出力します。
User2357111317が示唆するように、これを使用してみました。また、テキストのレイアウトを保持するために-layoutを含めました
for file in *.pdf; do pdftotext -layout "$file"; done
私は最初に Sam と Ryan Thompson に感謝しなければなりません-私の答えはここに彼らの解決策を追加する可能性に関するバリエーションに過ぎませんThunarのカスタムアクション:
そのため、あらゆるターミナルコマンドと同様に、フォルダー内のすべてのpdfファイルをテキストに変換するコマンドをThunarファイルマネージャーのカスタムアクションのリストに入れることができます
そこにあるコマンドはfind . -name '*.pdf' -print0 | xargs -0 -n1 pdftotext
で、( Ryan Thompson から来ています)これは私が使用したいものですが、厄介なターンがあります...以下を参照してください...
...これは面白いコマンドであり、注意して使用する必要があります:発射されるフォルダ内のすべての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
)に置き換えると、問題は回避されます。
しかし、特定のケースでは、ライアンのソリューションが何をするのかを正確に望むかもしれません!