#!/bin/bash # This shell script should be used for a file or directory whose name contains space ' ' and the name generated by eliminating space from the file name is used by another preexisting file or directory. title="ファイルおよびディレクトリ名の半角スペース除去スクリプト;半角スペースを除いた名前のファイルなどが既に存在しています" if [ -z "$1" ] then zenity --warning --title="${title}" --text="このスクリプトを実行する際には、\n必ず、上記のようなファイルをオプションとして付け加えてください。\nオプションとして何も付け加えられていないので、終了します。" exit 0 fi if [ ! -e "$1" ] then zenity --warning --title="${title}" --text="$1が存在しません。終了します。" exit 0 fi if [ "$(echo $1|grep "/")" ] then dir="$(echo $1|sed -e "s/[^/]*$//")" name="$(echo $1|tr "/" '\n'|tail -n 1)" else dir="$PWD"/ name="$1" fi goalname="$(echo ${name}|tr -d " ")" if [ ! -e "$dir${goalname}" ] then zenity --warning --title="${title}" --text="${goalname}が存在しません。終了します。" exit 0 fi if [ "${goalname}" = "$1" ] then zenity --warning --title="${title}" --text="$1には半角スペースが含まれません。終了します。" exit 0 fi # ここまでで、このスクリプトの第一オプションに半角スペースが含まれ、そのような名前のファイルまたはディレクトリが存在し、第一オプションから半角スペースを除去した名前のファイルが存在するという条件を満たさない場合にはこのスクリプトは終了している。 select=$(zenity --list --height=300 --width=800 --radiolist --title="${title}" --text="$dirのファイル「${name}」の名前には半角スペースが含まれますが、\n「${goalname}」という名前のファイルも存在しています。\nどうしますか。以下から選んでチェックしてください。" --column="↓にチェック" --column="No." --column="行う内容" TRUE "1" "ファイル「${goalname}」の名前を変えて、ファイル「$name」の名前を「${goalname}」にする。" FALSE "2" "「$name」の名前を変えない。" FALSE "3" "ファイル「$name」を違う名前にする。" FALSE "4" "既に存在する「${goalname}」を削除する。") if [ $? = 1 ] then zenity --warning --title="${title}" --text="キャンセルが押されました。「$name」については変更せずに終了します。" exit 0 fi if [ "$select" = "1" -o "$select" = "3" ] then nautilus "$dir" & sleep 2 name1=$(zenity --title="${title}" --entry --text="$dirのファイルは今開いたウィンドウのとおりです。存在しない名前を入力してください。") if [ $? = 1 ] then zenity --warning --title="${title}" --text="キャンセルが押されました。「$name」については変更せずに終了します。" exit 0 fi until [ -n "$name1" -a ! -e "$dir$name1" ] do name1=$(zenity --title="${title}" --entry --text="$dirのファイルは今開いたウィンドウのとおりです。存在しない名前を入力してください。") if [ $? = 1 ] then zenity --warning --title="${title}" --text="キャンセルが押されました。「$name」については変更せずに終了します。" exit 0 fi done if [ "$select" = "1" ] then mv "$dir${goalname}" "$dir${name1}" mv "$dir$name" "$dir${goalname}" else mv "$dir$name" "$dir$name1" fi exit 0 elif [ "$select" = "2" ] then exit 0 elif [ "$select" = "4" ] then rm "$dir$goalname" mv "$dir$name" "$dir$goalname" exit 0 else exit 0 fi exit 0