我的目標是為 mogrify 製作腳本。 mogrify 指令將調整目錄中的圖片大小,並將調整後的圖片放入同一目錄層級的目錄中,該目錄與工作目錄同名,但帶有後綴(_a)。
新目錄稍後將移至另一個集合。像這樣的事情,
#!/bin/bash
mkdir ../n_a
for file in *{.JPG|.jpg}; do mogrify -path ../n_a -resize 1200x1200 -quality 96;done
我猜 ../ 表示在子目錄中工作時的父目錄,但我在這裡需要幫助。
編輯:「n」需要替換為工作目錄名稱的語法。抱歉,第三行腳本也有拼字錯誤,應該讀為 n 而不是 x
Edit2:這個腳本完全符合我的需要,而且它是無聲的。
#!/bin/bash
DEST="../${PWD##*/}_a"
mkdir -p $DEST
mogrify -path $DEST -resize 1200x1200 -quality 96 *.jpg *.JPG
感謝 vgoff 提供正確的 PWD 語法和 cesarerivahttp://www.cesareriva.com/archives/722向我展示 DEST 函數。
還有一點:
${PWD##*/}_a
不關心目錄名稱中的空格,因此腳本失敗。在與影像相同的目錄中建立一個空目錄。
現在發現了,它也需要 $DEST 上的引號,大概是為了幫助 mkdir 創建名稱中帶有空格的目錄,並 mogrify 將文件寫入正確的位置,就像這樣
#!/bin/bash
DEST="../${PWD##*/}_a"
mkdir -p "$DEST"
mogrify -path "$DEST" -resize 1200x1200 -quality 96 *.jpg *.JPG
Edit3:甚至不需要腳本,即
mkdir ../${PWD##*/}_a && mogrify -path ../${PWD##*/}_a -resize '1200x1200>' -quality 95 *{.jpg|.JPG}
答案1
我猜 ../ 表示在子目錄中工作時的父目錄,但我在這裡需要幫助。
你猜對了。
“n”需要替換為工作目錄名稱的語法。
啊哈。在這種情況下,該pwd
命令將是你的朋友。用它填充變數或使用該$PWD
變數
答案2
是的。它是父目錄。
需要注意的是,這並不是 bash 特有的。它甚至不是貝殼。這是檔案系統運作方式的一部分。
檔案系統在每個目錄中都有一個條目,..
即父目錄。每個還有一個.
代表目前目錄的條目。