作者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://www.ptt.cc/bbs/Linux/M.1627700147.A.148.html
推 Bencrie: append 很慢,建議是不要啦 XD 07/31 12:09
所以才說如果一定要-exec的話XD
※ 編輯: filiaslayers (220.133.46.215 臺灣), 07/31/2021 13:02:15
→ raynoz: 不好意思 現在才有空上來看 超感謝!!! 07/31 23:44
推 Gold740716: 也可以用 find ... -exec tar -cf all.tar '{}' + 08/01 13:17