shell脚本: 逐个压缩文件夹内所有文件和文件夹

Posted zHeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本: 逐个压缩文件夹内所有文件和文件夹相关的知识,希望对你有一定的参考价值。

Linux下通过zip命令逐个压缩某文件夹下的子文件夹和文件(支持文件名中带空格场景):

filename : zipfolder

#!/bin/bash
IFS=$\'\\n\'
for file in ` ls -1 $1 `
do
 if [[ ${file} == *".zip" ]]
 then
   echo "  skipped: ${file}"
 else
   zip -r "$1/${file}.zip" "$1/${file}"
 fi
done

示例:

执行前:

MyMacBook-Pro:~ root$ find /Users/root/targetfolder -print | sed -e \'s;1*/;|____;g;s;____|; |;g\'
| | |____targetfolder
| | | |____file1.txt
| | | |____folder1
| | | | |____2.txt
| | | |____zipfile.zip

执行:

MyMacBook-Pro:~ root$ ./zipfolder /Users/root/targetfolder
adding: /Users/root/targetfolder/file1.txt (deflated 33%)
adding: /Users/root/targetfolder/folder1/ (stored 0%)
adding: /Users/root/targetfolder/folder1/2.txt (deflated 33%)
Skipped: zipfile.zip

执行后:

MyMacBook-Pro:~ root$ find /Users/root/targetfolder -print | sed -e \'s;1*/;|____;g;s;____|; |;g\'
| | |____targetfolder
| | | |____file1.txt
| | | |____file1.txt.zip
| | | |____folder1
| | | | |____2.txt
| | | |____folder1.zip
| | | |____zipfile.zip

  1. / ↩

以上是关于shell脚本: 逐个压缩文件夹内所有文件和文件夹的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本--压缩一个文件里里面的所有log文件

shell脚本----周期压缩备份日志文件

使用 shell 脚本或 AppleScript 将子文件夹中特定文件类型的所有文件压缩到每个子文件夹一个文件中

shell脚本文件夹内文件依次执行

linux下把一个文件夹内的文件全部压缩的shell命令

Linux使用shell脚本实现增量备份文件Linux合并历史备份文件Linux中find命令查询tar -cvzf文件生成压缩包Linux压缩包合并