在子目录中查找和gzip文件

Ubu*_*ser 1 bash

我在位置/ home/Docs/Calc中有*.xls文件.该文件夹中有多个子目录.例如

/home/Docs/Calc/2011
/home/Docs/Calc/2012
/home/Docs/Calc/2013
Run Code Online (Sandbox Code Playgroud)

我可以使用find命令在子目录下gzip每个文件,

find /home/Docs/Calc -iname "*.xls" -exec gzip {} \;
Run Code Online (Sandbox Code Playgroud)

但是我如何gzip每个子目录中的所有文件?例如.

/home/Docs/Calc/2011/2011.tar.gz
/home/Docs/Calc/2012/2012.tar.gz
/home/Docs/Calc/2013/2013.tar.gz
Run Code Online (Sandbox Code Playgroud)

我必须补充一点/ home/Docs/Calc是众多文件夹中的一个,例如Calc-work,calc-tax,calc-bills.所有这些都包含年份子文件夹

ick*_*fay 5

因为我们不需要递归,所以我不会find使用globbing和for循环来处理它.如果我们在Calc目录中,echo *将为我们提供所有目录名称:

~/Docs/Calc$ echo *
2011 2012 2013
Run Code Online (Sandbox Code Playgroud)

只是碰巧我们可以使用一个for循环迭代这些并以通常的方式将它们tar起来:

for year in *; do
    tar czf $year.tar.gz $year
done
Run Code Online (Sandbox Code Playgroud)

如果您希望在年份目录中生成tar包,则可以mvtar命令后添加.我会犹豫是否将tarball从一开始就放在目录中,否则tar可能会开始尝试将自己的输出tar自身.