要は、
somedir/
+- dir01/
| +- ...
+- dir02/
| +- ...
+- dir03/
| +- ...
:
みたいになっている状態のディレクトリから
somedir/
+- dir01.zip
+- dir01/
| +- ...
+- dir02.zip
+- dir02/
| +- ...
+- dir03.zip
+- dir03/
| +- ...
:
こうしたいということです。
dir0{1,2,3}.zip
を展開すると、それぞれ dir0{1,2,3}
の中身が出てくるみたいな感じです。
find(1)
と zip(1)
をつかってやっていきます。
$ find /path/to/somedir/ -maxdepth 1 -mindepth 1 -type d -exec zip -r {}.zip {} \;
カレントディレクトリで実行する場合は、単に以下のようにすればよいです:
$ find . -maxdepth 1 -mindepth 1 -type d -exec zip -r {}.zip {} \;
ターゲットとなるディレクトリ以下のディレクトリに対しても再帰的に zip
が実行されないように -maxdepth 1
と指定し、somedir/
そのものが zip
されないように -mindepth 1
と指定してあるところがミソです。