MENU

カレントディレクトリのサブディレクトリを.cbz形式で圧縮するBashワンライナー

自炊ユーザ必携スクリプト。カレントディレクトリにあるjpgの塊のサブフォルダを.cbzにするワンライナをChatGPTに書かせたのであった。昔コツコツ書いていた自作のスニペットもう全部不要……。

イントロ

BashおよびFishシェルは、UNIX系オペレーティングシステムにおいて、コマンドラインから操作するためのインターフェースを提供します。これらのシェルを利用することで、システムの様々なタスクを一行のコマンドで実行できます。本記事では、これらのシェルを使用して、サブディレクトリを.cbz形式で圧縮する方法を紹介します。

Bashでの実行

Bashでは、以下のワンライナーを使用することで、カレントディレクトリに存在する全てのサブディレクトリを.cbz形式で圧縮できます。

for dir in */; do dir_name="${dir%/}"; zip -r "$dir_name.zip" "$dir_name"; mv "$dir_name.zip" "$dir_name.cbz"; done

Fishでの実行

Fishシェルでは、少し構文が異なります。以下のワンライナーを使用します。

for dir in */; set dir_name (string trim -r -c '/' $dir); zip -r $dir_name.zip $dir_name; mv $dir_name.zip $dir_name.cbz; end

プロセスの説明

  1. カレントディレクトリの全サブディレクトリをリストアップします。
  2. 各サブディレクトリに対して、ディレクトリ名から末尾のスラッシュ(/)を削除し、その名前を変数にセットします。
  3. 次に、そのディレクトリをzip形式で圧縮します。
  4. 最後に、生成されたzipファイルの拡張子を.zipから.cbzに変更します。

.cbz形式は通常、コミックブックのリーダーアプリで使用される形式で、基本的にはzipアーカイブです。このワンライナーは、特にコミックや画像集の整理に有用で、シンプルでありながら、大量のディレクトリを効率的に圧縮するのに役立ちます。

目次