mac 的tar命令--exclude和linux的tar命令--exclude的區別

weixin_34236497發表於2018-05-26

有個需求是壓縮某個資料夾,但是要排除該資料夾下的另一個資料夾,於是用到
--exclude命令,但是在mac上面執行

tar -zcvf test.tgz test/ --exclude *.jpg

始終提示

tar: --exclude: Cannot stat: No such file or directory

而在linux上面就不會提示這個錯誤,到底是為什麼呢?
後來發現是mac和linux對這個引數的處理不一樣,通過man tar分別查閱mac和linux上面的說明,發現mac上面對於 --exclude是這樣解釋的

 --exclude pattern
Do not process files or directories that match the specified pattern.  
Note that exclusions take precedence over patterns or filenames specified 
on the command line.

第一句是對這個命令的解釋,也就是排除的意思,接下來第二句就是重點了,意思是 --exclude要寫在前面,所以mac上面排除某個檔案或資料夾要寫成

tar --exclude *.jpg -zcvf test.tgz test/

再看下linux下面man tar裡對 --exclude 的解釋

--exclude=PATTERN
exclude files, given as a PATTERN

只是解釋了這個命令的用法,並沒有對其位置有特殊的說明,經過試驗也驗證了--exclude放在前面和後面都是生效的

結語:mac和linux平臺很多命令都是相似的,但也是有一些區別,不能想當然

相關文章