问:我想找到所有*.doc文件并将它们创建成一个tarball并存储在/nfs/backups/docs/file.tar中。是否可以在Linux或类Unix系统上查找和tar文件?find命令用于根据给定条件在目录层次结构中搜索文件。tar命令是一个归档工具,用于在Linux和类Unix系统上创建tarball。如何在linuxunix上查找和tar文件让我们看看如何结合tar命令和find命令在一个命令行中创建一个tarball。查找命令语法为:find/path/to/search-name"file-to-search"-options##查找所有Perl(*.pl)文件##find$HOME-name"*.pl"-print##查找所有*.doc文件##find$HOME-name"*.doc"-print##查找所有*.sh(shell脚本)并运行ls-l命令##find。-iname"*.sh"-execls-l{}+***命令输出示例:-rw-r--r--1vivekvivek1169Apr42017./backups/ansible/cluster/nginx。build.sh-rwxr-xr-x1vivekvivek1500Dec614:36./bin/cloudflare.pure.url.shlrwxrwxrwx1vivekvivek13Dec312013./bin/cmspostupload.sh->postupload.shlrwxrwxrwx1vivekvivek2013年12月31日/bin/cmspreupload.sh->preupload.shlrwxrwxrwx1vivekvivek2013年12月31日./bin/cmssuploadimage.sh->uploadimage.shlrwxrwxrwx1vivekvivek2013年12月31日./bin/faqpostupload.sh->postxr1wxrwvivekvivek2013年12月31日./bin/faqpreupload.sh->preupload.shlrwxrwxrwx1vivekvivek2013年12月31日./bin/faquploadimage.sh->uploadimage.sh-rw-r--r--1vivekvivek778Nov614:44./bin/mirror.sh-rwxr-xr-x1vivekvivek136Apr252015./bin/nixcraft.com.301.sh-rwxr-xr-x1vivekvivek5472017年1月30日./bin/paypal.sh-rwxr-xr-x1vivekvivek5312013年12月31日./bin/postupload.sh-rwxr-xr-x1vivekvivek4372013年12月31日./bin/preupload.sh-rwxr-xr-x1vivekvivek10462017年5月18日./bin/purge.all.cloudflare.domain.shlrwxrwxrwx1vivekvivek132013年12月31日./bin/tipspostupload.sh->上传后。11932013年10月18日./bin/uploadimage.sh-rwxr-xr-x1vivekvivek29Nov614:33./.vim/plugged/neomake/tests/fixtures/errors.sh-rwxr-xr-x1vivekvivek215Nov614:33./.vim/plugged/neomake/tests/helpers/trap.shTar命令全部/home/vivek/projects目录tar包,运行:$tar-cvf/home/vivek/projects.tar/home/vivek/projects合并的find和tar命令语法是:find/dir/to/search/-name"*.doc"-exectar-rvfout.tar{}\;或find/dir/to/search/-name"*.doc"-exectar-rvfout.tar{}+示例:find$HOME-name"*.doc"-exectar-rvf/tmp/all-doc-files.tar"{}"\;或者find$HOME-name"*.doc"-exectar-rvf/tmp/all-doc-files.tar"{}"+这里是find命令的选项:-name"*.doc":按照给定指定的模式/条件在这里查找文件,以及$HOME中的所有*.doc文件。-exectar...:对find命令找到的所有文件执行tar命令。在这里,tar命令的选项:-r:将文件追加到存档的末尾。参数与-c选项具有相同的含义。-v:详细输出。-fout.tar:将所有文件附加到out.tar。您还可以像这样将find命令的输出通过管道传输到tar命令:find$HOME-name"*.doc"-print0|tar-cvf/tmp/file.tar--null-T-到find命令-print0选项处理特殊文件名。--null和-T选项告诉tar命令从标准输入/管道读取输入。您还可以使用xargs命令:find$HOME-typef-name"*.sh"|xargstarcfvz/nfs/x230/my-shell-scripts.tgz有关详细信息,请参见下面的手册页:$mantar$manfind$manxargs$manbash关于作者:作者是nixCraft的创建者,经验丰富的系统管理员,以及Linux操作系统/Unixshell脚本培训师。他曾与世界各地的客户合作,跨行业包括IT、教育、国防和空间研究以及非营利部门。在Twitter、Facebook和Google+上关注他。
