Это можно сделать с помощью printf
и bash
:
printf '%08x\n' $(< test.txt)
Или с помощью printf и bc...просто...потому что?
printf '%08s\n' $(bc <<<"obase=16; $(< test.txt)")
Чтобы напечатать вывод в текстовый файл, просто используйте перенаправление оболочки >
, например:
printf '%08x\n' $(< test.txt) > output.txt
rename -n 's/([^_]*_[^_]*)_([^_]*).pdf/$2_$1.pdf/' *
[^_]*
Любое количество знаков подчеркивания, отличных от -. ( )
Захват группы. 1-я пара воспроизводится $1
, а 2-я пара — $2
. Удалите -n
, если результат вас устраивает.
Аналогичный подход со сценарием оболочки:
for file in *.pdf; do
f12=${file%_*}
f3=${file##*_}
f3=${f3%.pdf}
mv -- "$file" "${f3}_${f12}.pdf"
done