Bash
兩個兩個壓縮文件
我有一個包含 800 個文件的目錄,如下所示:
file1.png file1@2x.png file2.png file2@2x.png file3.png file3@2x.png ... etc
我需要像這樣創建 zip 文件
file1.zip (containing file1.png and file1@2x.png) file2.zip (containing file2.png and file2@2x.png) file3.zip (containing file3.png and file3@2x.png)
有沒有我可以使用的魔法命令來做到這一點?
如果總是有兩個,很簡單:
for f in file+([0-9]).png; do zip "${f%png}zip" "$f" "${f/./@2x.}"; done
請注意,上述內容將在命令行中按原樣工作。如果您打算在腳本中使用它,請放在
shopt -s extglob
該行之前的某個位置。(extglob
預設情況下僅在互動式 shell 中啟用。)在舊的不處理擴展模式中,這種醜陋的解決方法將起作用,但最好按照Leonid在另一個答案中的建議
bash
更改邏輯:for f in file[0-9].png file*[0-9][0-9].png; do zip "${f%png}zip" "$f" "${f/./@2x.}"; done