Bash
使用萬用字元/正則表達式選擇不存在的文件
我正在嘗試將數百個
*.jpg
文件轉換為macOS 上的*.webp
文件。libwebp
特別是,我想使用命令行工具cwebp
來執行轉換。它是這樣工作的:cwebp <input_file>.jpg -o <output_file>.webp
我的
*.jpg
文件,其名稱是IMG_20160227_110640.jpg
左右,儲存在一個名為root
. 問題是*.webp
執行轉換時文件不存在,所以我不知道如何將它們的名稱傳遞給cwebp
. 例如,如果我只有一張圖片要轉換,我會簡單地執行cwebp IMG_20160227_110640.jpg -o IMG_20160227_110640.webp
但是,它們有數百個,我不想輸入數百行命令。如何使用正則表達式/編寫腳本來自動轉換?
使用
for
結合參數擴展的循環:for f in *.jpg; do cwebp "$f" -o "${f%.jpg}.webp"; done
另請參閱
LESS='+/Parameter Expansion' man bash
以閱讀有關 Bash 的內容。但是,參數擴展在 POSIX 中指定;它不是特定於 Bash 的。(不過,Bash 可能有一些擴展。)上面的命令適用於任何 POSIX 系統。