Command-Line

壓縮目錄中的所有文件?

  • June 22, 2021

有沒有辦法使用zip命令壓縮給定目錄中的所有文件?我聽說過使用*.*,但我希望它也適用於無副檔名文件。

你可以使用*; 沒有必要*.*。文件副檔名在 Unix 上並不特殊。*匹配零個或多個字元——包括一個點。所以它匹配foo.png,因為那是零個或多個字元(準確地說是七個)。

請注意,*預設情況下不匹配以點開頭的文件(也不匹配*.*)。這通常是你想要的。如果不是,在 bash 中,如果你shopt -s dotglob願意(但仍會排除.and ..)。其他 shell 有不同的方式(或根本沒有)包含點文件。

或者,zip還有一個-r(遞歸)選項可以一次完成整個目錄樹(不必擔心點文件問題):

zip -r myfiles.zip mydir

mydir包含您的文件的目錄在哪裡。請注意,生成的 zip 將包含目錄結構以及文件。正如 peterph 在他的評論中指出的那樣,這通常被視為一件好事:提取 zip 會將所有提取的文件整齊地儲存在一個子目錄中。

您還可以使用-j/--junk-paths選項告訴 zip 不要儲存路徑。

zip命令附帶文件,告訴您它的所有(許多)選項;鍵入man zip以查看該文件。這不是 zip 獨有的。您可以通過這種方式獲取大多數命令的文件。

引用自:https://unix.stackexchange.com/questions/57013