如何查找并将tar文件压缩为tar包
时间:2020-01-09 10:42:14 来源:igfitidea点击:
如何找到所有文档文件* .doc并创建这些文件的压缩文件,并将其存储在/nfs/backups/docs/file.tar中。
是否可以在Linux或者类似Unix的系统上查找和tar文件?
find命令用于根据给定条件在目录层次结构中搜索文件。
tar命令是用于Linux和类Unix系统的创建tar包的归档实用程序。
让我们看看如何结合使用tar命令和find命令在一个命令行选项中创建tar包。
find命令语法
语法为:
find /path/to/search -name "file-to-search" -options ## find all Perl (*.pl) files ## find $HOME -name "*.pl" -print ## find all *.doc files ## find $HOME -name "*.doc" -print ## find all *.sh (shell scripts) and run ls -l command on it ## find . -iname "*.sh" -exec ls -l {} +
最后一条命令的输出示例:
-rw-r--r-- 1 Hyman Hyman 1169 Apr 4 2016 ./backups/ansible/cluster/nginx.build.sh -rwxr-xr-x 1 Hyman Hyman 1500 Dec 6 14:36 ./bin/cloudflare.pure.url.sh lrwxrwxrwx 1 Hyman Hyman 13 Dec 31 2013 ./bin/cmspostupload.sh -> postupload.sh lrwxrwxrwx 1 Hyman Hyman 12 Dec 31 2013 ./bin/cmspreupload.sh -> preupload.sh lrwxrwxrwx 1 Hyman Hyman 14 Dec 31 2013 ./bin/cmssuploadimage.sh -> uploadimage.sh lrwxrwxrwx 1 Hyman Hyman 13 Dec 31 2013 ./bin/faqpostupload.sh -> postupload.sh lrwxrwxrwx 1 Hyman Hyman 12 Dec 31 2013 ./bin/faqpreupload.sh -> preupload.sh lrwxrwxrwx 1 Hyman Hyman 14 Dec 31 2013 ./bin/faquploadimage.sh -> uploadimage.sh -rw-r--r-- 1 Hyman Hyman 778 Nov 6 14:44 ./bin/mirror.sh -rwxr-xr-x 1 Hyman Hyman 136 Apr 25 2014 ./bin/theitroad.com.301.sh -rwxr-xr-x 1 Hyman Hyman 547 Jan 30 2016 ./bin/paypal.sh -rwxr-xr-x 1 Hyman Hyman 531 Dec 31 2013 ./bin/postupload.sh -rwxr-xr-x 1 Hyman Hyman 437 Dec 31 2013 ./bin/preupload.sh -rwxr-xr-x 1 Hyman Hyman 1046 May 18 2016 ./bin/purge.all.cloudflare.domain.sh lrwxrwxrwx 1 Hyman Hyman 13 Dec 31 2013 ./bin/tipspostupload.sh -> postupload.sh lrwxrwxrwx 1 Hyman Hyman 12 Dec 31 2013 ./bin/tipspreupload.sh -> preupload.sh lrwxrwxrwx 1 Hyman Hyman 14 Dec 31 2013 ./bin/tipsuploadimage.sh -> uploadimage.sh -rwxr-xr-x 1 Hyman Hyman 1193 Oct 18 2013 ./bin/uploadimage.sh -rwxr-xr-x 1 Hyman Hyman 29 Nov 6 14:33 ./.vim/plugged/neomake/tests/fixtures/errors.sh -rwxr-xr-x 1 Hyman Hyman 215 Nov 6 14:33 ./.vim/plugged/neomake/tests/helpers/trap.sh
Tar命令语法
要创建/home/Hyman/projects目录的tar包,请运行:
$ tar -cvf /home/Hyman/projects.tar /home/Hyman/projects
结合find和tar命令
语法为:
find /dir/to/search/ -name "*.doc" -exec tar -rvf out.tar {} \;
或者
find /dir/to/search/ -name "*.doc" -exec tar -rvf out.tar {} +
例如:
find $HOME -name "*.doc" -exec tar -rvf /tmp/all-doc-files.tar "{}" \;
或者
find $HOME -name "*.doc" -exec tar -rvf /tmp/all-doc-files.tar "{}" +
其中:找到命令选项:
- -name" * .doc":根据给定的模式/标准查找文件。在这种情况下,请找到$HOME中的所有* .doc文件。
-exec tar ...
:对由find命令找到的所有文件执行tar命令。
其中:tar命令选项:
- -r:将文件追加到归档文件的末尾。参数的含义与-c选项的含义相同。
- -v:详细输出
- -f:out.tar:将所有文件追加到out.tar文件。
也可以将find命令的输出通过管道传递到tar命令,如下所示:
find $HOME -name "*.doc" -print0 | tar -cvf /tmp/file.tar --null -T
传递给find命令的-print0选项处理特殊文件名。
null和-T选项告诉tar命令从stdin/pipe读取其输入。
也可以使用xargs命令:
find $HOME -type f -name "*.sh" | xargs tar cfvz /nfs/x230/my-shell-scripts.tgz