红联Linux门户
Linux帮助

如何找出并打包文件成tar包

发布时间:2018-01-23 09:46:49来源:geekpi作者:linux.cn
问题:我想找出所有的 *.doc 文件并将它们创建成一个 tar 包,然后存储在 /nfs/backups/docs/file.tar 中。是否可以在 Linux 或者类 Unix 系统上查找并 tar 打包文件?
find 命令用于按照给定条件在目录层次结构中搜索文件。tar 命令是用于 Linux 和类 Unix 系统创建 tar 包的归档工具。
如何找出并打包文件成tar包
让我们看看如何将 tar 命令与 find 命令结合在一个命令行中创建一个 tar 包。
 
Find 命令
语法是:
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" -exec ls -l {} +
最后一个命令的输出示例:
如何找出并打包文件成tar包
 
Tar 命令
要创建 /home/vivek/projects 目录的 tar 包,运行:
$ tar -cvf /home/vivek/projects.tar /home/vivek/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 "{}" +
这里,find 命令的选项:
-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 命令从标准输入/管道读取输入。也可以使用 xargs 命令:
find $HOME -type f -name "*.sh" | xargs tar cfvz /nfs/x230/my-shell-scripts.tgz
有关更多信息,请参阅下面的 man 页面:
$ man tar
$ man find
$ man xargs
$ man bash
 
SuperMap iServer 7C正式版tar包在linux上的部署:http://www.linuxdiyf.com/linux/30115.html
Ubuntu下解压tar.xz方法:http://www.linuxdiyf.com/linux/29453.html
把一个大tar包分割成多个小文件-Linux:http://www.linuxdiyf.com/linux/24722.html
如何从一个tar包中或者tar.gz包中提取某个文件:http://www.linuxdiyf.com/linux/15693.html
Linux tar包安装Nginx:http://www.linuxdiyf.com/linux/12699.html