Изменить тип файла с помощью zenity

Имея нулевой опыт работы со скриптами любого рода, я прошу прощения, если этот вопрос слишком прост, чтобы быть разрешенным здесь.

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

В общем, как бы то ни было.

pdftotext - это приложение, которое у меня сейчас есть, и я вижу, как оно будет использоваться в будущем. Поэтому я использую сценарий оболочки, вызывающий zenity, чтобы можно было вставить pdftotext в меню, и эй, до того, как все заработает.

Я хочу, чтобы я был умным, поэтому было бы неплохо, если бы я мог получить выходной текстовый файл ($szSavePath) для автоматической пометки ".txt" в конце.

Или даже выберите исходное имя файла ($file), удалите.pdf и замените его на.txt в качестве выходного имени.

Можно ли это сделать?

#!/bin/bash
file="$(zenity --title "PDF to Text:         Select a File to convert" --file-selection)"
szSavePath=$(zenity --file-selection --save --confirm-overwrite);echo $szSavePath
pdftotext "$file" $szSavePath

1 ответ

Если file содержит foo.pdfможно раздеть .pdf с помощью ${file%%.pdf},

С szSavePath, вы можете проверить, если он содержит .txt и добавьте его, если это не так:

szSavePath=$(zenity --file-selection --save --confirm-overwrite)
[[ $szSavePath != *.txt ]] && szSavePath="$szSavePath.txt"

Вы можете предоставить имя файла PDF с .txt вместо .pdf в качестве имени файла по умолчанию, используя --filename опция:

szSavePath=$(zenity --file-selection --save --confirm-overwrite --filename="${file%%.pdf}.txt")

Кроме того, не забудьте заключить в кавычки ваши переменные, чтобы имена файлов с пробелами и другими специальными символами не вызывали проблем:

pdftotext "$file" "$szSavePath"
Другие вопросы по тегам