Bash

使用萬用字元/正則表達式選擇不存在的文件

  • January 26, 2017

我正在嘗試將數百個*.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 系統。

引用自:https://unix.stackexchange.com/questions/340193