3
我工作的一個bash腳本,將目錄的數組,遍歷它,創建一個名爲「處理」每個目錄中的目錄,並在目錄中的每個文件運行一個命令。這裏是我的代碼(閱讀代碼中的評論,看看我卡住了什麼)。有任何想法嗎?擊:批量調整圖像
#!/bin/bash
command -v convert >/dev/null 2>&1 || {
echo >&2 "Convert is not installed. Aborting.";
exit 1;
}
declare -a directories_to_process=(
"$HOME/Desktop/Album 1"
"$HOME/Desktop/Album 2"
"$HOME/Desktop/Album 3"
);
for directory in "${directories_to_process[@]}"
do
if [ -d "$directory" ]; then
if [ ! -d "$directory/processed" ]; then
mkdir "$directory/processed"
fi
# Insert code to run the following command on each file in $directory:
#
# convert $directory/$filename -resize 108x108^ -gravity center -extent 108x108 $directory/processed/$filename
fi
done
UPDATE:
這裏是工作的腳本:
#!/bin/bash
command -v convert >/dev/null 2>&1 || {
echo >&2 "Convert is not installed. Aborting.";
exit 1;
}
directories_to_process=(
"$HOME/Desktop/Album 1"
"$HOME/Desktop/Album 2"
"$HOME/Desktop/Album 3"
);
for directory in "${directories_to_process[@]}"
do
[[ -d $directory ]] || continue
mkdir -p "$directory/processed"
for infile in "$directory"/*.jpg
do
outfile="$directory/processed/${infile##*/}"
convert "$infile" \
-resize '108x108^' \
-gravity center \
-extent 108x108 \
"$outfile"
done
done
引用整個水珠將無法正常工作。將其更改爲'for infile in「$ directory」/ *;做' –
@ DennisWilliamson呃 - 我知道比這更好。謝謝你的收穫。 –
@CharlesDuffy工作!非常感謝您不僅回答我的問題,還提供改進建議。你真棒!請參閱我的問題,瞭解我使用的最終腳本。我堅持使用'command -v',因爲根據[this](http://stackoverflow.com/a/677212/937084),'command'的退出狀態由POSIX定義,因此可能是最安全的使用。 – Nick