压缩目录

压缩目录

我想压缩(targzipzip)超过两天的目录。我有以下文件。每个目录都会有多个子目录和文件。

Oct 21 13:01 test1
Oct 22 13:01 test2 

期望的输出:

   test1.tar
   test2.tar

我尝试在下面编写命令;但是,它不起作用。

   find . -type d -maxdepth 1 -mtime +2 \! -name '*.gz' -exec gzip {} \;

我收到以下错误。

   gzip:test1.tar is a directory -- ignored
   gzip:test2.tar is a directory -- ignored

答案1

因为 gzip 只能压缩文件,所以在 gzip 压缩之前首先必须 tar 目录。

你想要做的是将 GNUtar与“z”一起使用,“z”压缩:

find . -type d -maxdepth 1 -mtime +2 \! -name '*.gz' -exec tar cfz {}.tgz {} \;

评论后编辑:

我没有注意到\! -name '*.gz',这在正常情况下是多余的......只要你没有以 . 结尾的目录名.gz

find . -type d -maxdepth 1 -mtime +2 -exec tar cfz {}.tgz {} \;

答案2

使用tar归档实用程序:

find . -type d -maxdepth 1 -mtime +2 ! -name '*.gz' -exec tar -czvf old_dirs.gz '{}' +;

-exec command {} +
-exec操作的变体对选定的文件运行指定的命令,但命令行是通过在末尾附加每个选定的文件名来构建的;该命令的调用总数为少得多 比匹配文件的数量。

相关内容