yam’s Lab

ハマったこと、学んだことを備忘録として記事にします。主にC++,Qt,ROS,Pythonについて取り扱います。

フォルダごとzip、unzipするスクリプト

ubuntuで特定のディレクトリ配下をディレクトリ毎にzip、解凍するスクリプトを記載します。
環境:ubuntu18.04

ディレクトリ配下のディレクトリ毎にzipにするスクリプト

#! /bin/bash

input_dir='/home/user/input'
output_dir='/home/user/zip'

cd $input_dir

dir=$(ls -d */)

for dir in $dirs
do
  ret=$(dir%/)
  dirname="${input_dir}/${ret}"
  filrname="${output_dir}/${ret}.zip"
  zip -r $filename $ret
done

処理は以下の流れです。
まずカレントをinput_dirに移動し、lsコマンドで配下のディレクトリの一覧を取得します。
lsコマンドで取得したフォルダ名を1つづつfor文でループし、%/で末尾の/を削除します。
最後にpathをくっつけて、zip化します。

ディレクトリ配下のzipファイルを全て別フォルダにunzipするスクリプト

#! /bin/bash

iinput_dir='/home/user/zip'
output_dir='/home/user/out'

cd $input_dir

files=`find $input_dir -name "*.zip"`
for file in $files
do
  echo $file
  unzip $file -d $output_dir
done

処理は以下の流れです。
まずカレントをinput_dirに移動し、findコマンドで拡張子がzipのファイルの一覧を取得します。
findコマンドで取得したファイルを1つづつfor文でループしoutput_dirに解凍します。