shellscript tar問題 - Linux

Table of Contents

最近公司丟一個寫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解開後只會解一個出來...

想問問看是哪裡出問題

另外想問問如何打包但不包含路徑

先感謝大家了

--

All Comments

Zenobia avatarZenobia2021-08-04
Tracy avatarTracy2021-08-07
用小腳本應該比使用很多不熟參數簡單 :)
Ophelia avatarOphelia2021-08-11
你第二個資料夾的內容就直接蓋過第一個了啊
Una avatarUna2021-08-14
第一次用-c,第二個要用-A
Carolina Franco avatarCarolina Franco2021-08-15
1樓的作法, 若argument數量過多,會爆掉
Todd Johnson avatarTodd Johnson2021-08-19
建議先用 -c 建立個純 .tar 檔
Madame avatarMadame2021-08-21
再用 --append , 最後再 gzip
Audriana avatarAudriana2021-08-23
不懂這樣的需求為什麼會想要用 find?
Audriana avatarAudriana2021-08-27
這路徑複雜度應該還用不到 find 命令
直接用 bash shell glob pattern 應該是最簡單的
cd /home/ray/photo && tar -czvf \
../photo2/202107.tar.gz 202107*/
還有 find 動作是遞迴的,沒指定 -mindepth 跟 -maxdepth
的話,你可能會找到不是你要的深層匹配的子目錄。
Emily avatarEmily2021-08-28
不好意思今天才有空上來看 超感謝大家!!
Charlie avatarCharlie2021-08-28
推一下 goldie 解法,我是 follow 原 po 指令修改
Freda avatarFreda2021-09-01
goldie 的解法應該才是最簡單的