作者raynoz (Raynoz)
看板Linux
標題[問題] shellscript tar問題
時間Sat Jul 31 07:54:33 2021
最近公司丟一個寫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), 來自: 211.75.6.134 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Linux/M.1627689275.A.D01.html
2F:→ relaughter: 用小腳本應該比使用很多不熟參數簡單 :) 07/31 10:59
3F:推 kdjf: 你第二個資料夾的內容就直接蓋過第一個了啊 07/31 11:51
4F:→ kdjf: 第一次用-c,第二個要用-A 07/31 11:52
5F:→ newversion: 1樓的作法, 若argument數量過多,會爆掉 07/31 12:36
6F:→ newversion: 建議先用 -c 建立個純 .tar 檔 07/31 12:38
7F:→ newversion: 再用 --append , 最後再 gzip 07/31 12:40
8F:推 rickieyang: 不懂這樣的需求為什麼會想要用 find? 07/31 13:32
9F:推 goldie: 這路徑複雜度應該還用不到 find 命令 07/31 15:25
10F:→ goldie: 直接用 bash shell glob pattern 應該是最簡單的 07/31 15:25
11F:→ goldie: cd /home/ray/photo && tar -czvf \ 07/31 15:25
12F:→ goldie: ../photo2/202107.tar.gz 202107*/ 07/31 15:25
13F:→ goldie: 還有 find 動作是遞迴的,沒指定 -mindepth 跟 -maxdepth 07/31 15:25
14F:→ goldie: 的話,你可能會找到不是你要的深層匹配的子目錄。 07/31 15:25
15F:→ raynoz: 不好意思今天才有空上來看 超感謝大家!! 07/31 23:44
16F:推 relaughter: 推一下 goldie 解法,我是 follow 原 po 指令修改 07/31 23:51
17F:→ relaughter: goldie 的解法應該才是最簡單的 07/31 23:52