![當目標缺少子目錄時,使用「convert」指令時遇到問題](https://rvso.com/image/747352/%E7%95%B6%E7%9B%AE%E6%A8%99%E7%BC%BA%E5%B0%91%E5%AD%90%E7%9B%AE%E9%8C%84%E6%99%82%EF%BC%8C%E4%BD%BF%E7%94%A8%E3%80%8Cconvert%E3%80%8D%E6%8C%87%E4%BB%A4%E6%99%82%E9%81%87%E5%88%B0%E5%95%8F%E9%A1%8C.png)
我有一個名為 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
?換行符只是為了“可讀性”。