You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何将指定目录子文件夹下的指定名称文件打包为Tar包

打包找到的文件为Tar包

没问题,你已经成功定位到要打包的文件了,只需要把文件列表传递给tar命令就能完成打包任务。这里有几种简单的实现方式:

方法1:通过xargs直接传递文件路径

直接在你现有命令的基础上,用xargs把找到的文件路径传给tar

find /logs/ -name app-2018 -execdir realpath "{}" ';' | xargs -I p find p -name stdout | xargs tar -cvf my_output.tar
  • -c:创建新的Tar包
  • -v:显示打包的详细过程(可选,去掉后会静默执行)
  • -f my_output.tar:指定输出的Tar包文件名,你可以改成自己想要的名字

方法2:用Tar的-T选项从标准输入读取文件列表

这种方式更简洁,不需要额外的xargs,直接让tar从管道读取文件路径:

find /logs/ -name app-2018 -execdir realpath "{}" ';' | xargs -I p find p -name stdout | tar -cvf my_output.tar -T -

这里的-T -表示从标准输入(也就是前面命令的输出)读取要打包的文件路径。

处理含特殊字符的文件名(可选)

如果你的文件名里包含空格、换行符或者其他特殊字符,建议用-print0--null选项来避免错误:

find /logs/ -name app-2018 -execdir realpath "{}" ';' | xargs -I p find p -name stdout -print0 | tar -cvf my_output.tar --null -T -

-print0find用空字符分隔文件名,--nulltar识别这种分隔方式,确保所有文件都能被正确处理。

执行完命令后,你就能得到包含目标文件的Tar包啦!

内容的提问来源于stack exchange,提问作者smishra

火山引擎 最新活动