當目標缺少子目錄時,使用「convert」指令時遇到問題

當目標缺少子目錄時,使用「convert」指令時遇到問題

我有一個名為 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?換行符只是為了“可讀性”

相關內容