
我有一個名為 full 的目錄,src
其中包含子目錄和其他圖像。我嘗試使用一個 bash 語句自動將它們全部調整到另一個目標目錄,thumb
如下所示:
find ./src -type f -follow -iname '*.jp*g' -exec convert -resize 150x150x "{}" "./thumb/${size}/{}" \;
這不起作用,因為該thumb
目錄最初是空的,並且沒有與src
.
我嘗試查找,man convert
但似乎找不到自動建立目錄的選項convert
。將目錄中的所有影像轉換為縮圖大小的有效方法是什麼thumb
?我需要預先建立拇指中的所有子目錄嗎?
編輯
我在上面的命令之前添加了以下內容:
find ./src -type d -follow -exec mkdir -p "thumb/${size}/{}" \;
但我很好奇我是否能夠用一個命令而不是兩個命令完成所有事情?
答案1
UNIX 的哲學是擁有命令,這些命令只做一件事,而且只做一件事。可以寫入文件的命令而不是標準輸出已經在擴充這條規則了。
您是否可以在一個命令中完成所有操作取決於您的定義。做這個:
find ./src -type f -follow -iname '*.jp*g' -exec /bin/sh -c \
'mkdir -p `dirname "thumb/'${size}'/{}"` &&'\
'convert -resize 150x150x "{}" "./thumb/'${size}'/{}' \;
算一個或多個命令:find
, sh
, mkdir
, dirname
, convert
?換行符只是為了“可讀性”。