Ваш запрос немного двусмысленный, но вот некоторые идеи, которые могут вам помочь.
Предполагается, что 1 из 10 ваших файлов равен
# static_part.dynamic_part_like_date.pdf
# SalesReport.20110416.pdf (YYYYMMDD)
И вы хотите, чтобы только SalesReport.pdf преобразовывался как незащищенный, вы можете использовать сценарий оболочки для выполнения ваших требований:
# make a file with the following contents,
# then make it executable with `chmod 755 pdfFixer.sh`
# the .../bin/bash has to be the first line the file.
$ cat pdfFixer.sh
#!/bin/bash
# call the script like $ pdfFixer.sh staticPart.*.pdf
# ( not '$' char in your command, that is the cmd-line prompt in this example,
# yours may look different )
# use a variable to hold the password you want to use
pw=foopass
for file in ${@} ; do
# %%.* strips off everything after the first '.' char
unsecuredName=${file%%.*}.pdf
#your example : pdftk secured.pdf input_pw foopass output unsecured.pdf
#converts to
pdftk ${file} input_pw ${foopass} output ${unsecuredName}.pdf
done
Вы можете обнаружить, что вам нужно изменить %.*
на
- меньше полосы с конца (используйте%. *), Чтобы удалить только последнюю '.' и все символы после (полоса справа).
- полоса от фронта (используйте # *.) Только к статической части, оставляя динамическую часть ИЛИ
- раздеться спереди (используйте ## *.), Чтобы раздеть все до последнего '.' Вст.
Вам действительно будет намного легче выяснить, что вам нужно в строке cmd.
Установите переменную с 1 примером fileName
myTestFileName=staticPart.dynamicPart.pdf
, а затем используйте echo в сочетании с модификаторами переменных, чтобы увидеть результаты.
echo ${myTestFileName##*.}
echo ${myTestFileName#*.}
echo ${myTestFileName##.*}
echo ${myTestFileName#.*}
echo ${myTestFileName%%.*}
и т.д.
Также обратите внимание, как я комбинирую измененное значение переменной с простой строкой (.pdf) в unsecuredName=${file%%.*}.pdf
IHTH