linux如何添加tar文件类型,关于linux:如何tar所有子目录中的某些文件类型?

我要tar和目录及其子目录中的所有.php和.html文件。如果我使用

tar -cf my_archive *

这是所有文件的tar,我不想要。如果我使用

tar -cf my_archive *.php *.html

它忽略子目录。我怎样才能使它递归地tar,但只包含两种类型的文件?

find ./someDir -name"*.php" -o -name"*.html" | tar -cf my_archive -T -

阿法克没有理由和逃走的帕伦斯混在一起,没有……

@Koodawg谢谢你的建议!在我测试过的操作系统(Centos6.4)上,如果不转义括号,命令就无法工作。

@迪迪文件的数量有限制吗?

@迪迪-不,我的意思是你不需要帕伦斯!

@用户1566515可能存在一些文件系统限制或总空间限制,这会对tar文件设置一个上限。这完全取决于你自己的系统。否则,管道基本上会动态地创建tar文件,因此您不会受到文件编号或大小的约束。

不需要parens'find./somedir-name"*.php"-o-name"*.html"tar-cf my_archive-t-'

@你说得对。我相应地更新了答案。谢谢!

谢谢!这很管用。

谢谢!…如何添加2个以上条件/种类的文件?

@Gluke对每种新情况使用-o -name [pattern]。

@迪迪:不好意思,不知什么原因,我要买find: paths must precede expression Usage: find [-H] [-L] [-P] [path...] [expression]。

一种方法是:

tar -cf my_archive.tar $( find -name"*.php" -or -name"*.html" )

但是,这种方法有一些注意事项:

如果文件或目录中有空格,则会失败,并且

如果文件太多,最大命令行长度已满,则此操作将失败。

解决方法可能是将find命令的内容输出到一个文件中,然后使用"-t,-filesforfile"选项来tar。

1)"失败"是指跳过带有空格的文件,还是不创建tar存档?2)我有大约10万份文件。是否超过了最大命令行长度?

1。它将创建存档,但会报告丢失的文件。2。我想那太久了。鉴于此,您最好使用下面@deedee建议的方法,它可以很好地解决这些问题。

要用不同的模式压缩多个文件,我们可以用空格分隔它们,并将它们全部添加到gz文件中,如下所示:

tar -czvf deploy.tar.gz **/Alice*.yml **/Bob*.json

这将从任何子目录中添加以alice开头的所有.yml文件,并从任何子目录中添加以bob开头的所有.json文件。

唯一使用焦油的答案,是我的最佳答案。

尽管glob对directory有"**"的印象,但此命令不会递归执行(任何子文件夹)

@埃迪**应该工作。可能你的参数有什么不同。还要检查在命令行中传递的文件夹名中是否有任何空间。如果没有,可以粘贴实际的命令吗?

"**"在到达命令之前由shell进行评估,它只被视为2个独立的*解析为0或字符,它没有递归功能来跨越目录tldp.org/ldp/gnu-linux-tools-summary/html/x11655.htm

@Eddie是的,它是由shell评估的,尽管bash>4.0有一个shopt -s globstar选项,所以答案是正确的,实际上是最好的。

find ./ -type f -name"*.php" -o -name"*.html" -printf '%P

' |xargs tar -I 'pigz -9' -cf target.tgz

对于多核或单核:

find ./ -type f -name"*.php" -o -name"*.html" -printf '%P

' |xargs tar -czf target.tgz

把它们放进文件里

find . \( -name"*.php" -o -name"*.html" \) -print > files.txt

然后使用文件作为tar的输入,根据使用的tar版本使用-i或-t

使用h复制符号链接

tar cfh my.tar -I files.txt

这将处理带有空格的路径:

find ./ -type f -name"*.php" -o -name"*.html" -exec tar uvf myarchives.tar {} +

tar -cf my_archive `find ./ | grep '.php\|.html'`

使用"find"和"grep"获取所有目录及其子目录中.php和.html文件的所有路径。然后将这些路径信息传递给tar进行压缩。

请小心那些符号"和"。还请注意,这将达到shell在命令行上允许的字符数的限制,与其他一些答案不同。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值