日々の記録

ほどよく書いてきます。

Ubuntuでrarファイルをzipファイルに変換する

2025-02-08 15:15:24 | その他雑記

こちらも生成AIで作った。ファイル名を_rar2zip.shとかにしておいて、bash _rar2zip.shで実行するとフォルダ内のrarファイルをzipにしてくれる。入れ子のrarもzipにできる。はず。圧縮率は    (cd "$TMP_DIR" && zip -r -0 "../${base_name}.zip" .) の部分の-0で調整できる

 

#!/bin/bash

TMP_DIR="tmp"

if ! command -v unrar &>/dev/null || ! command -v zip &>/dev/null; then
    echo "エラー: unrar または zip がインストールされていません。"
    exit 1
fi

SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"

for rar_file in "$SCRIPT_DIR"/*.rar; do
    [ -f "$rar_file" ] || continue  

    base_name=$(basename "$rar_file" .rar)
    
    echo "処理中: $rar_file"

    rm -rf "$TMP_DIR"
    mkdir -p "$TMP_DIR"

    unrar x -y "$rar_file" "$TMP_DIR/"

    function convert_rar_to_zip {
        local dir="$1"
        find "$dir" -type f -name "*.rar" | while read -r inner_rar; do
            inner_base=$(basename "$inner_rar" .rar)
            inner_dir="${inner_rar}_extracted"
            
            mkdir -p "$inner_dir"
            echo "  - 内部RAR展開: $inner_rar"
            unrar x -y "$inner_rar" "$inner_dir/"

            echo "  - 内部RARをZIP化: ${inner_base}.zip"
            (cd "$inner_dir" && zip -r -0 "../${inner_base}.zip" .)
            rm -rf "$inner_dir"
            rm -f "$inner_rar"
        done
    }

    convert_rar_to_zip "$TMP_DIR"

    echo "ZIPに圧縮中: ${base_name}.zip"
    # tmpフォルダ内のファイルだけを圧縮(tmpフォルダ自体は含まれない)
    (cd "$TMP_DIR" && zip -r -0 "../${base_name}.zip" .)

    rm -rf "$TMP_DIR"

    echo "完了: ${base_name}.zip"
done

echo "すべてのRARファイルの変換が完了しました!"
コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« メモ マウス、キーボードな... | トップ |   

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

その他雑記」カテゴリの最新記事