Я знаю, что я могу конвертировать PDF-файлы в текстовые файлы один за другим следующим образом:
$ pdftotext filename.pdf
Но есть ли одна команда, которая сделает это преобразование без указания отдельных имен файлов, чтобы конвертировать торговый центр?
Я вижу здесь, в Википедии, что «Wildcards (*), например $ pdftotext * pdf, для преобразования нескольких файлов не может использоваться, потому что pdftotext ожидает только одно имя файла.»
ls *.pdf | xargs -n1 pdftotext
xargs часто является быстрым решением для запуска одной и той же команды несколько раз с небольшим изменением каждый раз. Опция -n1 гарантирует, что только один PDF файл передается pdftotext в то время
Edit. : Если вы беспокоитесь о пространствах в именах файлов и таким образом, вы можете использовать эту альтернативу: [d1 ]
find . -name '*.pdf' -print0 | xargs -0 -n1 pdftotext
напишите сценарий bash
for f in *.pdf; do
pdftotext "$f"
done
или введите его в однострочной команде следующим образом:
for f in *.pdf; do pdftotext "$f"; done
Надеюсь, это поможет , У меня нет большой группы .pdfs, чтобы проверить это, но я использую эту стратегию для преобразования моих .flac-файлов в .ogg-файлы.
Я должен сначала поблагодарить Сэма и Райана Томпсона всем остальным ответчикам, поскольку мой ответ здесь не что иное, как вариант, связанный с возможностью добавления своих решений к пользовательским действиям Thunar:
поэтому, как и любая команда терминала, команда для преобразования в текст всех файлов PDF в папке может быть помещена в список пользовательских действий в файловом менеджере Thunar
[ ! d5]
Команда есть find . -name '*.pdf' -print0 | xargs -0 -n1 pdftotext, (исходя из Sam ), это тот, который я предпочитаю использовать, но он имеет (d12)
... это забавная команда, которая будет использоваться с осторожностью: он преобразуется в текст всего pdf в папке, где он запущен, поэтому, если он был запущен по ошибке в домашней папке, он будет иметь некоторые нежелательные эффекты: все ваши pdf-файлы будут преобразованы в текст! [ ! d16]
(я протестировал его так: создала на рабочем столе папку под названием «test», а в ней файл PDF и ряд папок в папках (/Desktop/test/a/b/c/e/f/g/h/i), каждая из которых в том же формате. Запуск этой команды в /Desktop/test преобразовал все pdf-файлы в папку «i».)
(Я бы приветствовал комментарии о том, как настроить эту команду, чтобы избежать этого риска.) [!d18 ]
Заменяя это на другой (for file in *.pdf; do pdftotext "$file" "$file.txt"; done), исходящий от Сэма, проблему избегают.
Но в некоторых случаях можно пожелать, как это делает решение Райана!
for file in *.pdf; do pdftotext "$file" "$file.txt"; done
Этот вывод выводит sample.pdf.txt.
Я попытался использовать этот, как и user2357111317, и я также включил sample.pdf.txt , чтобы сохранить макет текста
for file in *.pdf; do pdftotext -layout "$file"; done