試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

GUIファイルマネージャから選択したファイルを分割する

GUIファイルマネージャから選択した複数のファイルを結合する」の逆で、Thunar(Xfce4)やNautilus(GNOMENautilus-actions使用)で、選択したファイルを複数に分割するスクリプトとそのアクション設定を扱う。
今回作成したスクリプトでは、分割後のファイル名は元のファイル名に「.000」「.001」のような連番拡張子を付けて出力するようになっていて、桁の数は3桁固定(最大分割数は1,000)とした。

スクリプト

Zenityを使用している。
[任意]ファイル名: action-split.sh

#! /bin/bash

# 名前: 分割(_S)...
# 説明: 選択したファイルを複数に分割します
# 依存: Zenity
# icon: 任意
# 対象: ファイルのみ/単 ファイル名: *
# 種類:
#       Nautilus-actions: */*
#       Thunar: フォルダ以外全て
# 引数: 全てのファイル/ディレクトリのパス
#       Nautilus-actions: %M
#       Thunar: %f
# 概要: 指定したファイルを分割して、ダイアログで指定したディレクトリに出力
#       分割数の上限は1000(3桁固定)
#       NautilusやThunarではファイルの場所は絶対パスで引数に渡されるので
#       絶対パス変換は必要ないが、端末から実行した場合のために入れている

INFILE=${1}
INFILE_BASENAME=$(basename "${INFILE}")
INFILE_ABSPATH=$(cd "$(dirname "${INFILE}")" && pwd)/${INFILE_BASENAME}
INFILE_DIRNAME=$(dirname "${INFILE_ABSPATH}")

# ファイルかどうかをチェック
if [[ ! -f "${INFILE}" ]]; then
  zenity --error --title "ファイルではありません" --text "\"${INFILE}\"はファイルではありません"
  exit 1
fi

# 出力ディレクトリの場所を指定
OUTDIR=$(zenity --file-selection --directory --title="出力ディレクトリの指定" --filename "$(dirname "${INFILE_DIRNAME}")/")
[[ ${?} -ne 0 ]] && exit 1  # キャンセルされたら何もしないで終了

# 分割サイズの指定
# 正しい書式で入力されなければ入力ダイアログに戻る
for ((;;)); do
  SPLITTED_SIZE=$(zenity --entry --title "分割サイズの指定" --text "分割サイズを入力してください
例: 100m(100MiB)/5000k(5000KiB)/512(512B)")
  [[ ${?} -ne 0 ]] && exit 1  # キャンセルされたら終了
  # 書式が正しければループを抜ける
  if echo ${SPLITTED_SIZE} | egrep "^[0-9]+[km]?$" >/dev/null 2>&1; then
    break
  else
    zenity --error --title "書式が不正" --text "分割サイズの書式が不正なため
もう一度入力し直す必要があります"
  fi
done

# splitコマンドでファイルを分割し、指定ディレクトリに出力する
cd "${OUTDIR}"
split --verbose -b ${SPLITTED_SIZE} -a 3 -d "${INFILE_ABSPATH}" "${INFILE_BASENAME}." 2>&1 | zenity --text-info --title "分割処理の結果出力(${OUTDIR})" --width=500 --height=300

Thunarで使用する場合の設定

「基本」タブ
  • 名前: 分割(_S)...
  • 説明: 選択したファイルを複数に分割します
  • コマンド: [スクリプトの場所・ホームディレクトリを「~」と書いてもOK] %f
「登場する条件」タブ
  • 以下を選択した場合に登場: フォルダ以外全て

Nautilus-actionsで使用する場合の設定

既定の設定の部分は省略し、変更するところだけを書いている。

「メニュー・アイテムとアクション」タブ

関連記事:

使用したバージョン:

  • Thunar 0.9.0(0.9.0-r2)
  • Nautilus 2.22.5.1 / Nautilus-actions 1.4.1
  • Zenity 2.22.1