파일 나누기(Split)와 합치기(Join)의 스크립트입니다.
아래 내용을 스크립트 파일로 만듭니다.
추신: 업데이트 (update - 2009/11/23)
(** 메세지에 한글 때문에 UTF-8 로 저장해야 합니다. 영문일 경우엔 상관없습니다. **)
$ gedit "~/.gnome2/nautilus-scripts/Split"
$ gedit "~/.gnome2/nautilus-scripts/Join"
아래 내용을 스크립트 파일로 만듭니다.
추신: 업데이트 (update - 2009/11/23)
1. 네트워크 폴더 지원
2. 한글및 특수문자 지원
(** 메세지에 한글 때문에 UTF-8 로 저장해야 합니다. 영문일 경우엔 상관없습니다. **)
$ gedit "~/.gnome2/nautilus-scripts/Split"
#!/bin/sh
# Nautilus script - split/join
# phiDel (http://blog.foxb.kr/)
case $LANG in
# en* )
# ;;
* )
NOTSELECTED="선택한 파일이 없습니다."
ZENITYTEXT="나누어질 크기를 선택하세요."
ZENITYCOLUMN0="선택"
ZENITYCOLUMN1="크기"
ZENITYCUSTOM="사용자 지정..."
ZENITYINPUTTEXT="파일을 나눌 크기를 적어주세요.\n예제: 1024k - (단위: b, k, m, g)"
QUESTIONTEXT="나눠질 파일과 같은 파일이 있습니다.\n삭제하고 계속 하시겠습니까?"
PROGTEXT="파일을 나누는 중 입니다."
;;
esac
urldecode(){
x=`echo "$@" | sed 'y/+/ /; s/%/\\\\x/g; s/\//\\\\\//g'`
echo "$x" | sed 's/^.*$/'"$x"'/'
}
if [ ! $NAUTILUS_SCRIPT_SELECTED_URIS ] ; then
zenity --error --title "Error" --text "$NOTSELECTED"
exit
fi
FILENAME=$(basename "$NAUTILUS_SCRIPT_SELECTED_URIS")
FILENAME=`urldecode "$FILENAME"`
CURRENTDIR=$PWD
RESULT=$(zenity --list --title "$FILENAME" --text="$ZENITYTEXT" --column="$ZENITYCOLUMN0" --column="$ZENITYCOLUMN1" FALSE 500k TRUE 1m FALSE 5m FALSE 10m FALSE 50m FALSE 100m FALSE "$ZENITYCUSTOM" --radiolist --width 250 --height 275)
if [ $? = 0 ] ; then
if [ "$RESULT" = "$ZENITYCUSTOM" ] ; then
RESULT=$(zenity --title "$ZENITYCUSTOM" --text "$ZENITYINPUTTEXT" --entry)
if [ $? = 1 ] ; then
exit
fi
fi
if [ $(stat -c%s "$FILENAME".split.* | awk '{size +=$1} END {print size}') -gt 0 ] ; then
zenity --question --title "Question" --text "$QUESTIONTEXT"
if [ $? = 1 ] ; then
exit
fi
rm "$FILENAME".split.*
fi
TOTALFILESIZE=`stat -c%s "$FILENAME"`
A=0
split -b $RESULT "$FILENAME" "$FILENAME".split. |
(while [ $A -lt $TOTALFILESIZE ]
do
sleep 0.3
A=`stat -c%s "$FILENAME".split.* | awk '{size +=$1} END {print size}'`
echo $(expr $A \* 100 / $TOTALFILESIZE )
done) | zenity --auto-close --auto-kill --progress --text="$PROGTEXT"
fi
$ chmod 755 "~/.gnome2/nautilus-scripts/Split"# Nautilus script - split/join
# phiDel (http://blog.foxb.kr/)
case $LANG in
# en* )
# ;;
* )
NOTSELECTED="선택한 파일이 없습니다."
ZENITYTEXT="나누어질 크기를 선택하세요."
ZENITYCOLUMN0="선택"
ZENITYCOLUMN1="크기"
ZENITYCUSTOM="사용자 지정..."
ZENITYINPUTTEXT="파일을 나눌 크기를 적어주세요.\n예제: 1024k - (단위: b, k, m, g)"
QUESTIONTEXT="나눠질 파일과 같은 파일이 있습니다.\n삭제하고 계속 하시겠습니까?"
PROGTEXT="파일을 나누는 중 입니다."
;;
esac
urldecode(){
x=`echo "$@" | sed 'y/+/ /; s/%/\\\\x/g; s/\//\\\\\//g'`
echo "$x" | sed 's/^.*$/'"$x"'/'
}
if [ ! $NAUTILUS_SCRIPT_SELECTED_URIS ] ; then
zenity --error --title "Error" --text "$NOTSELECTED"
exit
fi
FILENAME=$(basename "$NAUTILUS_SCRIPT_SELECTED_URIS")
FILENAME=`urldecode "$FILENAME"`
CURRENTDIR=$PWD
RESULT=$(zenity --list --title "$FILENAME" --text="$ZENITYTEXT" --column="$ZENITYCOLUMN0" --column="$ZENITYCOLUMN1" FALSE 500k TRUE 1m FALSE 5m FALSE 10m FALSE 50m FALSE 100m FALSE "$ZENITYCUSTOM" --radiolist --width 250 --height 275)
if [ $? = 0 ] ; then
if [ "$RESULT" = "$ZENITYCUSTOM" ] ; then
RESULT=$(zenity --title "$ZENITYCUSTOM" --text "$ZENITYINPUTTEXT" --entry)
if [ $? = 1 ] ; then
exit
fi
fi
if [ $(stat -c%s "$FILENAME".split.* | awk '{size +=$1} END {print size}') -gt 0 ] ; then
zenity --question --title "Question" --text "$QUESTIONTEXT"
if [ $? = 1 ] ; then
exit
fi
rm "$FILENAME".split.*
fi
TOTALFILESIZE=`stat -c%s "$FILENAME"`
A=0
split -b $RESULT "$FILENAME" "$FILENAME".split. |
(while [ $A -lt $TOTALFILESIZE ]
do
sleep 0.3
A=`stat -c%s "$FILENAME".split.* | awk '{size +=$1} END {print size}'`
echo $(expr $A \* 100 / $TOTALFILESIZE )
done) | zenity --auto-close --auto-kill --progress --text="$PROGTEXT"
fi
$ gedit "~/.gnome2/nautilus-scripts/Join"
#!/bin/sh
# Nautilus script - split/join
# phiDel (http://blog.foxb.kr/)
case $LANG in
# en* )
# ;;
* )
NOTSELECTED="선택한 파일이 없습니다."
NOTSPLITFILE="선택한 파일이 나누어진 파일이 아닙니다."
QUESTIONTEXT="합쳐질 파일과 같은 파일이 있습니다.\n삭제하고 계속 하시겠습니까?"
PROGTEXT="파일을 합치는 중 입니다."
;;
esac
urldecode(){
x=`echo "$@" | sed 'y/+/ /; s/%/\\\\x/g; s/\//\\\\\//g'`
echo "$x" | sed 's/^.*$/'"$x"'/'
}
if [ ! $NAUTILUS_SCRIPT_SELECTED_URIS ] ; then
zenity --error --title "Error" --text "$NOTSELECTED"
exit
fi
FILENAME=$(basename "$NAUTILUS_SCRIPT_SELECTED_URIS")
FILENAME=`urldecode "$FILENAME"`
CURRENTDIR=$PWD
FILENAME=${FILENAME%.*}
FILEEXT=${FILENAME##*.}
if [ ! "$FILEEXT" = "split" ] ; then
zenity --error --title "Error" --text "$NOTSPLITFILE"
exit
fi
JOINFILENAME=${FILENAME%.*}
if [ -f "$JOINFILENAME" ] ; then
zenity --question --title "Question" --text "$QUESTIONTEXT"
if [ $? = 1 ] ; then
exit
fi
rm "$JOINFILENAME"
fi
TOTALFILESIZE=`stat -c%s "$JOINFILENAME".split.* | awk '{size +=$1} END {print size}'`
A=0
cat /dev/null > "$JOINFILENAME"
cat "$JOINFILENAME.split".* > "$JOINFILENAME" |
(while [ $A -lt $TOTALFILESIZE ]
do
sleep 0.3
A=$(stat -c%s "$JOINFILENAME")
echo $(expr $A \* 100 / $TOTALFILESIZE )
done) | zenity --auto-close --auto-kill --progress --text="$PROGTEXT"
$ chmod 755 "~/.gnome2/nautilus-scripts/Join"# Nautilus script - split/join
# phiDel (http://blog.foxb.kr/)
case $LANG in
# en* )
# ;;
* )
NOTSELECTED="선택한 파일이 없습니다."
NOTSPLITFILE="선택한 파일이 나누어진 파일이 아닙니다."
QUESTIONTEXT="합쳐질 파일과 같은 파일이 있습니다.\n삭제하고 계속 하시겠습니까?"
PROGTEXT="파일을 합치는 중 입니다."
;;
esac
urldecode(){
x=`echo "$@" | sed 'y/+/ /; s/%/\\\\x/g; s/\//\\\\\//g'`
echo "$x" | sed 's/^.*$/'"$x"'/'
}
if [ ! $NAUTILUS_SCRIPT_SELECTED_URIS ] ; then
zenity --error --title "Error" --text "$NOTSELECTED"
exit
fi
FILENAME=$(basename "$NAUTILUS_SCRIPT_SELECTED_URIS")
FILENAME=`urldecode "$FILENAME"`
CURRENTDIR=$PWD
FILENAME=${FILENAME%.*}
FILEEXT=${FILENAME##*.}
if [ ! "$FILEEXT" = "split" ] ; then
zenity --error --title "Error" --text "$NOTSPLITFILE"
exit
fi
JOINFILENAME=${FILENAME%.*}
if [ -f "$JOINFILENAME" ] ; then
zenity --question --title "Question" --text "$QUESTIONTEXT"
if [ $? = 1 ] ; then
exit
fi
rm "$JOINFILENAME"
fi
TOTALFILESIZE=`stat -c%s "$JOINFILENAME".split.* | awk '{size +=$1} END {print size}'`
A=0
cat /dev/null > "$JOINFILENAME"
cat "$JOINFILENAME.split".* > "$JOINFILENAME" |
(while [ $A -lt $TOTALFILESIZE ]
do
sleep 0.3
A=$(stat -c%s "$JOINFILENAME")
echo $(expr $A \* 100 / $TOTALFILESIZE )
done) | zenity --auto-close --auto-kill --progress --text="$PROGTEXT"
'쉘스크립트 > 좋은스크립트' 카테고리의 다른 글
| 우분투 11.10 설치후 할일 한방에 끝내기 (4) | 2011/10/22 |
|---|---|
| 파일 나누기(Split), 합치기(Join) - ShScript (0) | 2009/11/20 |
| Nautilus에서 CD 이미지 (.BIN, .MDF, .IMG, .BWI, .NRG) 쉽게 Mount 하기 - ShScript (1) | 2009/11/02 |
| 한글(cp949), 일본어(shift-jis) zip 압축을 풀자 (0) | 2009/10/17 |