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をインストールしました。 "C:\Program Files\Cygwin\cygwin.bat
これにより bash シェルが提供され、方向を変更して画像の位置に移動できます。画像の位置がと仮定してその"D:\Your Name\Images"位置に移動し、cd "/cygdrive/d/Your Name/Images" bashを使用してコマンドを呼び出そうとします。forループ:

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

答え2

これを拡張/改善と考えてください。@スリックス答え。

cygpathCygwinには、WindowsパスをbashCygwinシェルで理解できる* nixスタイルに変換するための便利なユーティリティがあります。

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

提案された明示的な-loopに加えて、ファイル名のフィルタリングをよりよくサポートし、スペースのある名前をより安全にサポートできる(Windowsで発生する可能性のあるものなど)for使用を検討することもできます。find

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. execこのconvertコマンドは、結果ファイルごとに'{}'(参照)プレースホルダーを使用します。

関連情報