SSブログ

複数ディレクトリに含まれるファイルを圧縮するスクリプト@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つがはいるわけです。)
で、いろいろと思考錯誤したところ、以下のようなスクリプトになりました。
#!/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に以下を追加
#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



タグ:Cygwin 日本語 LS

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。