Cygwin 使用通配符修剪所有图像

Cygwin 使用通配符修剪所有图像

不幸的是,我被迫使用Windows。所以,我安装了Cygwin一些Linux命令。

以下命令工作正常。它将图像替换为其修剪后的版本。

"C:\Program Files\Cygwin\bin\convert" image1.png -trim image1.png 

但是,如何在所有图像文件上运行此命令?

"C:\Program Files\Cygwin\bin\convert" * -trim ????

答案1

您安装了 cygwin,因此您可以使用它的 shell 来获得最大的命令支持: "C:\Program Files\Cygwin\cygwin.bat
这将为您提供一个 bash shell 然后您可以更改方向以转到图像位置。假设您的图像位置是"D:\Your Name\Images",要转到那里cd "/cygdrive/d/Your Name/Images" ,然后使用 bash 调用您的命令for循环:

for file in *
do
convert "$file" -trim "$file"
done

答案2

将此更多地视为扩展/增强@Slyx的回答。

Cygwin 有一个有用的实用程序,cygpath可以将 Windows 路径转换为 ​​Cygwin bashshell 中可以理解的 *nix 样式:

$ cygpath "D:\Path\To\Images"
/cygdrive/d/Path/To/Images

除了for建议的显式 -loop 之外,您还可以考虑使用find它,它可以更好地支持过滤文件名,并且可以更安全地支持带空格的名称(就像您在 Windows 中可能遇到的那样):

find "$(cygpath "D:\Path\To\Images")"/ -type f -name '*.png' -exec convert '{}' -trim '{}' \;
  1. 在目录内D:\Path\To\Images
  2. 查找-type f以 ( ) 结尾的文件png( -name '*.png'),
  3. 对于每个结果文件,execconvert命令都带有'{}'(引用的)占位符。

相关内容