在其封闭文件夹中压缩和命名文件的脚本

时间:2015-06-24 09:19:31

标签: macos bash unix terminal automation

我正在尝试编写一个bash脚本,我可以在其中为其提供一个主目录,其中包含多个文件夹并压缩文件夹的内容(不包括其封闭文件夹),并将zip重命名为其封闭文件夹。

这是一个视觉示例,应该解释我想要实现的目标。

|ROOT FOLDER
   > Folder_1
      - file
      - folder
      - file
   > Folder_2
      - file
      - folder
      - file
   > Folder_3
      - file
      - folder
      - file

我希望能够定位ROOT FOLDER并返回压缩文件。以下是导出的拉链及其内容的示例。

|ROOT FOLDER
   > zips 
      > Folder_1.zip
         - file
         - folder
         - file
      > Folder_2.zip
         - file
         - folder
         - file
      > Folder_3.zip
         - file
         - folder
         - file

我希望这是有道理的。我做了很多这个并且认为这绝对可以自动化,尽管我的bash脚本知识是有限的。

1 个答案:

答案 0 :(得分:1)

这会在根文件夹附近的文件夹中创建一个zip文件。您可以随意使用它,直到它符合您的要求

#!/bin/bash

function usage(){
  echo "Usage: $(basename $0) <root folder path>"
  exit 1
}

[ $# -eq 0 ] && usage

root=$1
pushd ${root}
folders=$(find . -type d -maxdepth 1 -mindepth 1)
[ -d ../zips ] || mkdir ../zips
for folder in $folders
do
  pushd $folder
  zip -r ../../zips/$(basename ${folder}).zip .
  popd
done
popd