Wildcards
從 zip 存檔中排除子目錄——請解釋語法
我想遞歸壓縮文件夾,但排除某些目錄(
temp/.hidden
在下面的範例中)。我希望 zip 文件有一個頂級文件夾,temp
如下例所示,因此我的工作目錄是temp
.mkdir -p temp/subdir touch temp/subdir/keepthisfile.txt touch temp/excludethisfile.txt mkdir temp/.hidden touch temp/.hidden/exclude.txt cd temp/
我必須實現我想要的程式碼是
zip -r temp.zip ../temp/ -x ../temp/excludethisfile.txt ../temp/.hidden/* ../temp/.hidden/
或者更簡潔(從網上其他地方收集的語法)
zip -r temp.zip ../temp/ -x ../temp/excludethisfile.txt ../temp/*.hidden*
我可以明白為什麼這會起作用,但我不明白為什麼下面的程式碼不能做同樣的事情(即為什麼我需要
../temp/*.hidden*
而不是僅僅需要../temp/.hidden*
?)zip -r temp.zip ../temp/ -x ../temp/excludethisfile.txt ../temp/.hidden*
在執行 Zip 之前,您的 shell 會擴展
../temp/.hidden*
為;../temp/.hidden
此模式不再匹配../temp/.hidden/exclude.txt
。您應該按照 Zip 手冊頁的建議引用該模式:zip -r temp.zip ../temp/ -x ../temp/excludethisfile.txt '../temp/.hidden*'
謝謝!現在有了正確的 RFTM,我的手冊頁建議
反斜杠避免了 shell 文件名替換,因此名稱匹配由 zip 在所有目錄級別執行。
所以程式碼變成了 zip -r temp.zip ../temp/ -x ../temp/exclude.txt ../temp/.hidden/*
我更喜歡引用:)