在上面的目錄中建立新目錄的 bash 語法是什麼?

在上面的目錄中建立新目錄的 bash 語法是什麼?

我的目標是為 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 特有的。它甚至不是貝殼。這是檔案系統運作方式的一部分。

檔案系統在每個目錄中都有一個條目,..即父目錄。每個還有一個.代表目前目錄的條目。

相關內容