とあるフォルダ内のフォルダをzipにまとめます。

利用シーン

1
2
3
写真/2014-11-15  
写真/2014-11-16  
写真/2014-11-17  

といったように写真をフォルダ分けしてました。これを、

1
2
3
写真/2014-11-15.zip  
写真/2014-11-16.zip  
写真/2014-11-17.zip  

といったようにzipでまとめます。実際こんなことがしたかったので作りました。

スクリプト

1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash

rm result.sh
touch result.sh
chmod +x result.sh

for f in *
do
  echo zip \"$f.zip\" \"$f\"/\* >> result.sh

done

動作詳細

  • すべての(ファイル|フォルダ)に対してzipコマンドで圧縮を行う
  • 上記の動作を行うスクリプトを生成する

スクリプトを生成することのメリットは以下の感じ。

  • 入力ミスでファイルを失うことを防ぐ
  • 生成スクリプトの1行を取り出してテストできる
  • ダブルクォーテーションでのエスケープが確実に行える

つまり、びびりなスクリプト初心者はこうすると安全だってことでした。

良ければ使ってください。