作者filiaslayers (司马云)
看板Linux
标题Re: [问题] shellscript tar问题
时间Sat Jul 31 10:55:45 2021
请改用xargs
find /home/ray/photo -type d -name "202107*" |xargs tar -czvPf /home/ray/photo2
/202107.tar.gz
你用exec的话,他是每找到一笔就会做一次tar的动作,这会把之前的压缩覆档盖掉
所以你解出来的档案应该是只有最後一笔找到的资料
xargs则是把你find找到的所有档案做为tar的输入,所以会一次压缩全部找到的档案
其实你可以试试 -exec echo {} \;跟xargs echo来比较结果就知道了
如果一定要用-exec,那加上--apend或-r的参数,让每次压缩时都放在原本压缩档的档尾
这应该也行,但我没试过XD
※ 引述《raynoz (Raynoz)》之铭言:
: 最近公司丢一个写Script的工作给我这个完全没碰过的人....
: 是这样的...
: 我在/home/ray/photo路径下放了3个资料夹,分别是20210811、20210701跟20210715
: 而我想要把20210701跟20210715两个资料夹打包放到/home/ray/photo2并命名为202107
: 我的写法是
: find /home/ray/photo -type d -name "202107*" -exec tar -czvPf /home/ray/photo2/202107.tar.gz "{}" \;
: 打包时会显示两个资料夹都有包进去
: 但是用tar -zxvf解开後只会解一个出来...
: 想问问看是哪里出问题
: 另外想问问如何打包但不包含路径
: 先感谢大家了
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.133.46.215 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Linux/M.1627700147.A.148.html
1F:推 Bencrie: append 很慢,建议是不要啦 XD 07/31 12:09
所以才说如果一定要-exec的话XD
※ 编辑: filiaslayers (220.133.46.215 台湾), 07/31/2021 13:02:15
2F:→ raynoz: 不好意思 现在才有空上来看 超感谢!!! 07/31 23:44
3F:推 Gold740716: 也可以用 find ... -exec tar -cf all.tar '{}' + 08/01 13:17