複数ディレクトリに含まれるファイルを圧縮するスクリプト@cygwin [cygwin]
cygwinで複数のディレクトリに含まれているファイルをディレクトリごとに圧縮するスクリプト
こんな感じのやつを
ParentDir
├─DirA
│ ├─fileA.1
│ ├─fileA.2
│ └─fileA.3
├─DirB
│ ├─fileB.1
│ ├─fileB.2
│ └─fileB.3
└...
こんな感じに圧縮したいわけです。
ParentDir
├─DirA.zip (fileA.1、fileA.2、fileA.3を含む)
├─DirB.zip (fileB.1、fileB.2、fileB.3を含む)
└...
cygwinでスクリプトを書くときに厄介なのは、Windowsではディレクトリやファイルの名前にスペースが含まれること。
ディレクトリにスペースが入っている場合、for dir in `find . -type d`でまわすとdirに入るディレクトリ名はスペースで区切られたものが入るためにうまいこと処理できない。("Documents and Settings"ディレクトリの場合、dirには"Documents"と"and"と"Settings"の3つがはいるわけです。)
で、いろいろと思考錯誤したところ、以下のようなスクリプトになりました。
こんな感じのやつを
ParentDir
├─DirA
│ ├─fileA.1
│ ├─fileA.2
│ └─fileA.3
├─DirB
│ ├─fileB.1
│ ├─fileB.2
│ └─fileB.3
└...
こんな感じに圧縮したいわけです。
ParentDir
├─DirA.zip (fileA.1、fileA.2、fileA.3を含む)
├─DirB.zip (fileB.1、fileB.2、fileB.3を含む)
└...
cygwinでスクリプトを書くときに厄介なのは、Windowsではディレクトリやファイルの名前にスペースが含まれること。
ディレクトリにスペースが入っている場合、for dir in `find . -type d`でまわすとdirに入るディレクトリ名はスペースで区切られたものが入るためにうまいこと処理できない。("Documents and Settings"ディレクトリの場合、dirには"Documents"と"and"と"Settings"の3つがはいるわけです。)
で、いろいろと思考錯誤したところ、以下のようなスクリプトになりました。
#!/usr/bin/bash
find . -type d ! -name "." |
(
while read dir
do
echo "${dir}.zip"
/usr/bin/zip "${dir}.zip" "${dir}"/*
done
)
cygwinで日本語を表示 [cygwin]
cygwinで日本語を使うためのおぼえがき。
いろんなサイトで紹介されているけど、自分のために残しておく。
この設定をしておかないと、lsしたら日本語のフォルダは文字化けするし、日本語のフォルダに移動もできない。
~/.bashrcに以下を追加
~/.inputrcに以下を追加
いろんなサイトで紹介されているけど、自分のために残しておく。
この設定をしておかないと、lsしたら日本語のフォルダは文字化けするし、日本語のフォルダに移動もできない。
~/.bashrcに以下を追加
#Japanese Settings
export LANG=ja_JP.SJIS
export TZ=JST-9
export JLESSCARSET=japanese-sjis
alias ls='ls --show-control-chars'
~/.inputrcに以下を追加
#Japanese Settings
set kanji-code sjis
set convert-meta off
set meta-flag on
set output-meta on