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