Jac*_*ack 5 command-line zip compression shell-script
原始输入?
? test tree
.
??? f1.md
??? f2.md
??? f3.md
??? f4.txt
??? f5.csv
??? f6.doc
??? s1
? ??? code
? ??? data
? ??? f1.md
? ??? f2.md
? ??? f3.md
? ??? f4.txt
? ??? f5.csv
? ??? f6.doc
??? s2
? ??? code
? ??? data
? ??? f1.md
? ??? f2.md
? ??? f3.md
? ??? f4.txt
? ??? f5.csv
? ??? f6.doc
??? s3
? ??? code
? ??? data
? ??? f1.md
? ??? f2.md
? ??? f3.md
? ??? f4.txt
? ??? f5.csv
? ??? f6.doc
??? s4
??? code
??? data
??? f1.md
??? f2.md
??? f3.md
??? f4.txt
??? f5.csv
??? f6.doc
12 directories, 30 files
Run Code Online (Sandbox Code Playgroud)
预期输出
? test tree
.
??? f1.md
??? f2.md
??? f3.md
??? f4.txt
??? f5.csv
??? f6.doc
??? s1
? ??? code
? ??? data
? ??? Archive.zip
? ??? f1.md
? ??? f2.md
? ??? f3.md
? ??? f4.txt
? ??? f5.csv
? ??? f6.doc
??? s2
? ??? code
? ??? data
? ??? Archive.zip
? ??? f1.md
? ??? f2.md
? ??? f3.md
? ??? f4.txt
? ??? f5.csv
? ??? f6.doc
??? s3
? ??? code
? ??? data
? ??? f1.md
? ??? f2.md
? ??? f3.md
? ??? f4.txt
? ??? f5.csv
? ??? f6.doc
??? s4
??? code
??? data
??? Archive.zip
??? f1.md
??? f2.md
??? f3.md
??? f4.txt
??? f5.csv
??? f6.doc
12 directories, 33 files
Run Code Online (Sandbox Code Playgroud)
我想要压缩子文件夹(s1/s2/s4)中的文件。
我尝试zip -r Archive.zip ./*在每个子文件夹( s1/s2/s4) 中使用命令行。这很不方便,因为我必须输入 3 次相同的命令。
如何使用一次命令或编写脚本来实现此目的?我在 OSX(10.12.6) 上。
find . -type d -name data -execdir zip -jr data/Archive.zip data ';'
Run Code Online (Sandbox Code Playgroud)
该find命令会查找data当前目录下的各个目录并执行
zip -jr data/Archive.zip data
Run Code Online (Sandbox Code Playgroud)
在每个sN目录(目录的父data目录)中。这也将存档隐藏文件。
该-j标志zip将剥离添加到存档和存档的文件的路径名将被放置在内部data的目录。
这是有效的,因为-execdir基本上cd在执行命令之前对找到的东西的父目录做了一个。
要避免s3目录,请使用
find . -type d -name data \! -path "./s3/*" -execdir zip -jr data/Archive.zip data ';'
Run Code Online (Sandbox Code Playgroud)
像这样的脚本可以完成这项工作:
for i in `find /path -type d -name data`;
do
if [ "$i" = "s3/data" ]
then continue
else cd "$i" && zip Archive.zip *
fi
done
Run Code Online (Sandbox Code Playgroud)
PS 替换/path为目录树的起点
| 归档时间: |
|
| 查看次数: |
1309 次 |
| 最近记录: |