Преобразование кодировок, форматов графики и иное.

Установка, настройка, эксплуатация.
Ответить
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Преобразование кодировок, форматов графики и иное.

Сообщение root »

Оглавление
Темы
Введение
Практические примеры и совместимость со старыми утилитами
Полезные однострочники для конвертации
Автоматизация конвертации и пакетная обработка
Дополнительные примеры и утилиты Fedora
Прочие преобразования: Base64, HEX, транслитерация каталогов

Тема посвящена утилитам, которые помогают выполнять типичные задачи по преобразованию данных в Fedora:
— смена кодировок текстовых файлов,
— конвертация графических форматов,
— базовое определение типа файлов и работы с мультимедиа.

Инструменты подбираются из стандартных пакетов Fedora, без использования тяжёлых GUI-программ.

Преобразование кодировок текста

Современные системы Fedora по умолчанию используют кодировку UTF-8.
Однако при работе со старыми файлами (KOI8-R, CP1251 и т.п.) может потребоваться перекодировка.

Для этого используется утилита iconv:

Код: Выделить всё

iconv -f koi8-r -t utf-8 input.txt -o output.txt
Где:
  1. -f — исходная кодировка,
  2. -t — целевая кодировка,
  3. -o — имя выходного файла.
Проверить кодировку можно командой file:

Код: Выделить всё

file -bi input.txt
Пример вывода:

Код: Выделить всё

text/plain; charset=koi8-r
Для автоматического определения кодировки полезна утилита chardet (из пакета python3-chardet):

Код: Выделить всё

sudo dnf install python3-chardet
chardet input.txt

Преобразование форматов изображений

Fedora использует современную версию ImageMagick, в которой основная команда теперь — magick.

Примеры:

Код: Выделить всё

magick image.png image.jpg
magick convert -resize 800x600 photo.jpg small.jpg
Проверить информацию о файле:

Код: Выделить всё

magick identify image.png
Для пакетной обработки можно использовать простые конструкции bash:

Код: Выделить всё

for i in *.png; do magick "$i" "${i%.png}.jpg"; done

Преобразование видео и аудио

Для мультимедиа используется ffmpeg — универсальный конвертер аудио и видео.

Установка:

Код: Выделить всё

sudo dnf install ffmpeg
Примеры:

Код: Выделить всё

# Конвертация видео в MP4
ffmpeg -i input.mkv -c:v libx264 -c:a aac output.mp4

# Извлечение звука из видео
ffmpeg -i video.mp4 -vn -acodec copy audio.aac

Преобразование форматов документов

Пакет pandoc позволяет конвертировать между различными текстовыми форматами:

Код: Выделить всё

sudo dnf install pandoc
Примеры:

Код: Выделить всё

pandoc file.md -o file.html
pandoc file.md -o file.pdf

Дополнительные утилиты
Утилита Назначение
dos2unix / unix2dos Конвертация перевода строк DOS ↔ Unix
enca Определение и преобразование кодировок (альтернатива iconv)
file-roller Определение типа архивов и распаковка
identify (из ImageMagick) Информация о графических файлах

Заключение

Fedora предоставляет богатый набор инструментов для преобразования данных в текстовом и графическом виде.
Для текстов и кодировок — iconv и chardet,
для изображений — magick,
для видео и аудио — ffmpeg,
для документов — pandoc.

Эти утилиты легко комбинируются в скриптах и автоматизации задач администратора.

Классические способы по-прежнему работают, но некоторые утилиты имеют обновлённые вызовы.

Преобразование кодировок текста

Код: Выделить всё

iconv -f koi8-r -t utf-8 старый_файл.txt -o новый_файл.txt
recode koi8-r..utf8 файл.txt
file -i файл.txt
enca файл.txt
Современный аналог (Python-утилита):

Код: Выделить всё

chardet файл.txt
Конвертация изображений (старый способ)

Код: Выделить всё

convert image.png image.jpg
convert -resize 1024x768 wallpaper.jpg new_wallpaper.jpg
Современный вызов:

Код: Выделить всё

magick image.png image.jpg
magick convert -resize 1024x768 wallpaper.jpg new_wallpaper.jpg
Пакетная обработка

Код: Выделить всё

for i in *.txt; do iconv -f koi8-r -t utf-8 "$i" -o "utf8_$i"; done
for i in *.png; do magick "$i" "${i%.png}.jpg"; done

Сводная таблица аналогов
Утилита (старая) Актуальная замена Назначение
iconv iconv (актуальна) Преобразование кодировок текста
recode iconv / chardet Массовое перекодирование файлов
convert magick Обработка и конвертация изображений
file / enca file / chardet Определение кодировки и типа файлов

Заключение

Утилиты `iconv`, `convert`, `recode`, `enca` продолжают работать и на новых версиях Fedora.
Тем не менее, для Unicode-окружений предпочтительнее использовать `magick`, `chardet` и `pandoc`.

Текст

Код: Выделить всё

for i in *.txt; do iconv -f cp1251 -t utf-8 "$i" -o "utf8_$i"; done
for i in *.txt; do file -bi "$i"; done
Изображения

Код: Выделить всё

for i in *.jpg; do magick "$i" "${i%.jpg}.png"; done
for i in *.png; do magick "$i" -resize 800x "${i%.png}_small.png"; done
Видео и аудио

Код: Выделить всё

for i in *.mkv; do ffmpeg -i "$i" -c:v libx264 -c:a aac "${i%.mkv}.mp4"; done
for i in *.mp4; do ffmpeg -i "$i" -vn -ab 192k "${i%.mp4}.mp3"; done
Документы

Код: Выделить всё

for i in *.md; do pandoc "$i" -o "${i%.md}.html"; done
for i in *.md; do pandoc "$i" -o "${i%.md}.pdf"; done

Пример скрипта

Код: Выделить всё

#!/bin/bash
LOGFILE="/var/log/convert.log"
WORKDIR="$HOME/convert"
TEXTDIR="$WORKDIR/text"
IMGDIR="$WORKDIR/images"

mkdir -p "$TEXTDIR" "$IMGDIR"

echo "=== $(date '+%F %T') ===" >> "$LOGFILE"

for file in "$TEXTDIR"/*.txt; do
    [ -e "$file" ] || continue
    ENCODING=$(file -bi "$file" | awk -F'=' '{print $2}')
    if [[ "$ENCODING" != "utf-8" ]]; then
        iconv -f "$ENCODING" -t utf-8 "$file" -o "${file%.txt}_utf8.txt"
        echo "$file → перекодирован" >> "$LOGFILE"
    fi
done

for img in "$IMGDIR"/*.jpg; do
    [ -e "$img" ] || continue
    magick "$img" -resize 1024x768 "${img%.jpg}_small.jpg"
    echo "$img → уменьшен" >> "$LOGFILE"
done
Запуск по расписанию

Код: Выделить всё

crontab -e
0 3 * * * /home/user/convert.sh >/dev/null 2>&1
Пример лог-файла

Код: Выделить всё

=== 2025-10-18 03:00:01 ===
Файл: text/readme.txt (кодировка iso-8859-5) → перекодирован
Изображение images/photo.jpg → уменьшено до 1024x768

Заключение

Этот скрипт можно расширить: добавить обработку видео (`ffmpeg`), документов (`pandoc`)
или интеграцию с systemd-таймерами для регулярного запуска.
Fedora остаётся гибкой системой, где классические инструменты легко комбинируются с современными средствами автоматизации.
Последний раз редактировалось root 12 авг 2026 21:35, всего редактировалось 1 раз.
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »


Ниже приведены вспомогательные инструменты и сценарии, не вошедшие в основные разделы.
Они полезны при пакетной обработке текстов, графики и при работе со смешанными кодировками.

Определение и перекодировка текстов с использованием enca

Утилита enca может определить кодировку и при необходимости перекодировать файл.
Особенно полезна при работе со старыми документами в CP1251, KOI8-R и т.д.

Код: Выделить всё

sudo dnf install enca
enca -L ru input.txt
enca -L ru -x utf-8 input.txt > output.txt
-L ru указывает язык (русский),
-x utf-8 задаёт выходную кодировку.

Преобразование перевода строк DOS ↔ Unix

При работе с логами или текстами, пришедшими из Windows, часто нужно привести формат перевода строк.

Код: Выделить всё

sudo dnf install dos2unix
dos2unix file_dos.txt
unix2dos file_unix.txt
Утилиты dos2unix и unix2dos изменяют окончания строк, не трогая содержимое файлов.

Конвертация графики (обратная совместимость)

В старых скриптах по-прежнему встречается использование команды convert.
В современных версиях Fedora она является ссылкой на magick convert, но для совместимости её можно оставить.

Код: Выделить всё

sudo dnf install ImageMagick
convert old_image.bmp new_image.jpg
convert -resize 1024x768 photo.jpg photo_small.jpg
Если требуется полная совместимость, рекомендуется использовать современный вызов:

Код: Выделить всё

magick convert old_image.bmp new_image.jpg

Определение типа и кодировки файла

Команда file сообщает MIME-тип и кодировку. Это позволяет автоматически определить, как обрабатывать файл в скриптах.

Код: Выделить всё

file filename
file -i filename
Пример вывода:

Код: Выделить всё

filename: text/plain; charset=iso-8859-5

Пример универсального скрипта автоматической обработки файлов

Этот вариант объединяет определение типа файла, перекодировку текста и конвертацию изображений.

Код: Выделить всё

#!/bin/bash
WORKDIR="$HOME/files"
LOGFILE="$WORKDIR/process.log"
mkdir -p "$WORKDIR"

echo "=== $(date '+%F %T') ===" >> "$LOGFILE"

for f in "$WORKDIR"/*; do
    [ -e "$f" ] || continue
    TYPE=$(file -b --mime-type "$f")
    case "$TYPE" in
        text/*)
            ENCODING=$(file -bi "$f" | awk -F'=' '{print $2}')
            if [[ "$ENCODING" != "utf-8" ]]; then
                iconv -f "$ENCODING" -t utf-8 "$f" -o "${f%.txt}_utf8.txt" && \
                echo "[TEXT] $f перекодирован из $ENCODING в UTF-8" >> "$LOGFILE"
            fi
            ;;
        image/png)
            magick "$f" "${f%.png}.jpg" && \
            echo "[IMG] $f → преобразован в JPG" >> "$LOGFILE"
            ;;
        image/jpeg)
            magick "$f" -resize 1024x768 "${f%.jpg}_small.jpg" && \
            echo "[IMG] $f → уменьшен до 1024x768" >> "$LOGFILE"
            ;;
        *)
            echo "[SKIP] Неизвестный тип: $TYPE ($f)" >> "$LOGFILE"
            ;;
    esac
done
Пример вывода лог-файла:

Код: Выделить всё

=== 2025-10-18 04:30:01 ===
[TEXT] notes.txt перекодирован из koi8-r в UTF-8
[IMG] photo.png → преобразован в JPG
[IMG] banner.jpg → уменьшен до 1024x768

Дополнительные утилиты Fedora, полезные для преобразований
Утилита Назначение
file Определение типа файла и кодировки
enca Определение и перекодировка текста по языку
dos2unix / unix2dos Преобразование перевода строк Windows ↔ Unix
magick Современный инструмент для обработки изображений
ffmpeg Конвертация видео и аудио

Заключение

Примеры из этого раздела расширяют базовые возможности Fedora для автоматизированной обработки файлов.
Используя стандартные инструменты (`file`, `iconv`, `enca`, `magick`, `ffmpeg`), можно легко построить универсальные скрипты,
включая обработку текстов, изображений и мультимедиа без привлечения внешнего ПО.
Все утилиты доступны из стандартных репозиториев и совместимы с Fedora 39–41.
Последний раз редактировалось root 12 авг 2026 21:28, всего редактировалось 1 раз.
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »


Этот раздел включает дополнительные приёмы и сценарии, которые часто применяются при администрировании систем Fedora.

Преобразование Base64 ↔ текст

Base64 используется для кодирования бинарных данных в текстовом виде.
Встроенные утилиты позволяют быстро перекодировать строки и файлы.

Код: Выделить всё

# Кодировать строку в Base64
echo "тестовая строка" | base64

# Декодировать Base64 обратно в текст
echo "0YLQtdGB0YI=" | base64 -d
Для работы с файлами:

Код: Выделить всё

base64 image.png > image.b64
base64 -d image.b64 > image.png

Преобразование HEX ↔ текст

Иногда данные сохраняются в шестнадцатеричном виде (например, в дампах или SQL-таблицах).
Для конвертации можно использовать стандартные инструменты `xxd` и `od`.

Код: Выделить всё

# Преобразовать текст в HEX
echo "Hello" | xxd -p

# Преобразовать HEX обратно в текст
echo "48656c6c6f0a" | xxd -r -p
Пример с файлом:

Код: Выделить всё

xxd -p file.bin > file.hex
xxd -r -p file.hex > file.bin

Рекурсивная перекодировка имён каталогов в транслит

Следующий скрипт выполняет транслитерацию имён каталогов из кириллицы в латиницу.
Работает рекурсивно, аккуратно переименовывает каталоги, избегая конфликтов.
Подходит для ситуаций, когда системы не поддерживают кириллические пути.

Код: Выделить всё

#!/bin/bash
# Перекодирует рекурсивно в текущем каталоге имена
# каталогов в транслит.

shopt -s nullglob
IFS=$'\n'
while true; do
    COUNT=0
    for NAME in `find . -type d`; do
        BNAME=`basename "$NAME"`
        BFOLDER=${NAME%/*}
        TRS=`echo $BNAME | sed "y/абвгдезийклмнопрстуфхцы/abvgdezijklmnoprstufxcy/"`
        TRS=`echo $TRS  | sed "y/АБВГДЕЗИЙКЛМНОПРСТУФХЦЫ/ABVGDEZIJKLMNOPRSTUFXCY/"`
        TRS=${TRS//ч/ch}; TRS=${TRS//Ч/CH}
        TRS=${TRS//ш/sh}; TRS=${TRS//Ш/SH}
        TRS=${TRS//ё/jo}; TRS=${TRS//Ё/JO}
        TRS=${TRS//ж/zh}; TRS=${TRS//Ж/ZH}
        TRS=${TRS//щ/sh}; TRS=${TRS//Щ/SH}
        TRS=${TRS//э/je}; TRS=${TRS//Э/JE}
        TRS=${TRS//ю/ju}; TRS=${TRS//Ю/JU}
        TRS=${TRS//я/ja}; TRS=${TRS//Я/JA}
        TRS=${TRS//ъ/}; TRS=${TRS//Ь/}
        if [[ "$TRS" != "$BNAME" ]]; then
            NEWTRS="$BFOLDER/$TRS"
            COUNT=`expr $COUNT + 1`
            mv -v "$NAME" "$NEWTRS"
            break
        fi
    done
    if [ $COUNT -eq 0 ]; then
        echo "Everything seems to be done"
        exit
    fi
done

Пример результата
Исходное имя После транслита
Рабочие документы Rabochie dokumenty
Фотографии отпуск Fotografii otpusk

Заключение

Base64, HEX и транслитерация — мелкие, но часто используемые инструменты системного администратора.
В Fedora все они доступны «из коробки» и не требуют дополнительных пакетов.
Эти команды удобно использовать в скриптах автоматизации и при миграции данных между системами.
Последний раз редактировалось root 12 авг 2026 21:24, всего редактировалось 1 раз.
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »


Собираем несколько JPG файлов в один PDF

Код: Выделить всё

convert -compress -quality 85 *.png doc.pdf
Склеить нескольких JPG файлов в один PDF и расположить по два на один лист можно воспользоваться командой:

Код: Выделить всё

convert -density 300x300 -quality 100 *.jpg -resize 50% -append output.pdf
где:
  • -density 300x300 устанавливает разрешение изображения
  • -quality 100 устанавливает качество изображения
  • *.jpg указывает на все JPG файлы в текущем каталоге
  • -resize 50% сжимает изображения на 50% (если нужно уменьшить размер исходных изображений)
  • -append размещает два изображения на одном листе
  • output.pdf - имя создаваемого PDF файла
После выполнения команды у вас будет создан PDF файл, содержащий все ваши JPG изображения с разбиением по два на один лист и сжатием.
Ответить