1

Я пытаюсь переименовать кучу PDF-файлов на основе определенной строки в файлах.

Пока что я конвертирую в текст, а затем использую awk для печати строки 41. Но это насколько я могу.

Я пытался использовать xargs, чтобы передать вывод awk команде mv, но на сегодняшний день ни одного кубика.

Я знаю, что, скорее всего, поступлю неправильно, но если все-таки смогу пролить свет, я бы это очень оценил.

Я пытаюсь это без bash, так что я могу сделать псевдоним этого между прочим.

ls *.pdf | xargs -n1 mv `ls *.pdf | xargs -n1 pdftotext; ls page_*.txt | xargs -n1 awk 'NR==41'`.txt'

1 ответ1

2

У вас есть несколько вариантов на выбор. Для этого вы можете написать функцию или сценарий оболочки (bash), который вы также можете использовать в псевдониме. И, конечно, вы можете попытаться написать одну строчку, чтобы сделать магию.

Я думаю о команде в следующей структуре (как однострочный):

for pdf in *.pdf; do pdftotext "${pdf}"; filename=`basename -s .pdf "${pdf}"`; newname=`awk 'NR==41' "${filename}.txt"`; mv "${pdf}" "${newname}"; done;`

Которые могут быть реструктурированы как:

for pdf in *.pdf
do
    pdftotext "${pdf}"
    filename=`basename -s .pdf "${pdf}"`
    newname=`awk 'NR==41' "${filename}.txt"`
    mv "${pdf}" "${newname}"
done

Этот файл можно сохранить как сценарий оболочки и добавить в список псевдонимов под любым именем.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .