GUIファイルマネージャから選択した複数のファイルを結合する
Thunar(Xfce4)やNautilus(GNOME・Nautilus-actions使用)で複数のファイルをGUIで結合するためのスクリプトと、そのアクション設定をここで扱う。
(2008/9/2)逆に、分割を行うスクリプトとアクション設定は「GUIファイルマネージャから選択したファイルを分割する」で扱っている。
スクリプト
Zenityを使用している。
[任意]ファイル名: action-cat.sh
#! /bin/bash # 名前: 結合(_C)... # 説明: 選択したファイルを結合します # 依存: Zenity # icon: 任意 # 対象: ファイルのみ/単複 ファイル名: * # 種類: # Nautilus-actions: */* # Thunar: フォルダ以外全て # 引数: 全てのファイル/ディレクトリのパス # Nautilus-actions: %M # Thunar: %F # 概要: 複数ファイルを結合し、ダイアログで指定したファイルとして出力 # ファイルでないものがないかチェック for F in "${@}"; do if [[ ! -f "${F}" ]]; then zenity --error --title "ファイルではありません" --text "\"${F}\"はファイルではありません" exit 1 fi done # 出力ファイルの場所を指定 OUTFILE=$(zenity --file-selection --title "出力ファイル" --filename "$(dirname "${1}")/" --confirm-overwrite) [[ ${?} -ne 0 ]] && exit 1 # キャンセルされたら何もしないで終了 # 進行状況を表示しながらファイルを結合 # 途中でキャンセルされたらファイルを消す rm "${OUTFILE}" -f for ((I = 1; I < ${#} + 1; I++)); do # ${#}はファイル数 echo $(((${I} - 1) * 100 / ${#})) # パーセンテージをzenityに送る eval "cat \"\${${I}}\" >> \"${OUTFILE}\"" # 各ファイルを出力ファイルに追記) done | zenity --progress --title "結合中" --text "結合中..." --auto-close || rm "${OUTFILE}" -f
Thunarで使用する場合の設定
「基本」タブ
(2008/9/2)引数部分(%F)が抜けていたのを修正
「登場する条件」タブ
- 以下を選択した場合に登場: フォルダ以外全て
Nautilus-actionsで使用する場合の設定
既定の設定の部分は省略し、変更するところだけを書いている。
「メニュー・アイテムとアクション」タブ
「条件」タブ
- 選択したアイテムが次に属していたら表示する
- 選択したアイテムが複数のファイルまたはフォルダの場合は表示する
順番についての注意点
ファイルマネージャからスクリプトへ渡される引数の順番が結合の順番となり、ファイルマネージャ上の表示順になる。
表示されている順番が結合する順番と違った場合(降順整列している場合など)、結合後のファイルの内容が意図しないものとなる場合がある。
このスクリプトを使用する場合、結合したいファイルが必ず昇順*1に並んでいるということを確認する。
ファイル名に半角スペースが含まれる場合
結合したいファイルの名前に半角スペースが含まれていると、うまく引数としてファイル名が渡らずに結合ができない場合がある。
Thunarの場合、複数ファイルを選択して「名前変更...」を選択すると一括で名前を変更できるので、半角スペースを一時的に別の文字に変更するとこの問題を回避することはできる。
(2008/9/2)この問題はスクリプトの修正*2により対処済み。
関連記事:
- ファイルマネージャThunarのコンテキストメニューのアクションを作る
- 「CLIとGUIの架け橋」zenity
- Nautilusでファイルの種類や名前によって色々なアクションを実行
- Nautilus-actionsの設定例
- GUIファイルマネージャから選択したファイルを分割する
使用したバージョン: