GNU/Linux >> Linux の 問題 >  >> Linux

Imagemagickを使用してディレクトリ内のすべての画像を回転させる方法は?

パターンに一致するディレクトリ内のすべての画像を回転させたい。

これまでのところ:

for file in `ls /tmp/p/DSC*.JPG`; do
  convert $file -rotate 90 file+'_rotated'.JPG
done

しかし、それは出力を与えませんか?

承認された回答:

コードにはかなりの数の問題があります。まず第一に、あなたは悪い考えであるlsを解析しています。また、変数を$fileとして参照する必要があります。 ご指摘のとおり、スペースで壊れないように引用する必要があります。 numを宣言しています しかし、それは決して使用されません。より安全な方法は次のとおりです。

find /tmp/p/ -name "DSC*.JPG" | while IFS= read -r file; do
  convert "$file" -rotate 90 "$file"_rotated.JPG
done

ファイルに改行が含まれている場合でも問題は発生しますが、パスにスペースが含まれている場合でも少なくとも問題は発生しません。

ファイルがすべて同じディレクトリにある場合は、globbingを使用してさらに簡略化できます。パラメータ展開を使用して、foo_rotated.JPG1を作成することもできます。 foo.JPG_rotated.JPGの代わりに :

for file in /tmp/p/DSC*.JPG; do
  convert "$file" -rotate 90 "${file%.JPG}"_rotated.JPG
done

Linux
  1. Linuxでホームディレクトリのユーザーアカウントを削除する方法

  2. AmazonLinuxにImageMagickをインストールする方法

  3. Linuxでuseraddを使用してユーザーを管理する方法

  1. 特定のフォルダ内の特定の拡張子を持つすべてのファイルを削除するにはどうすればよいですか?

  2. インストールされているすべてのパッケージをZypperで再インストールする方法は?

  3. ディレクトリ内のファイル サイズがゼロ (0) バイトのすべてのファイルを再帰的に検索する方法

  1. Linuxですべてのユーザーの共有ディレクトリを作成する方法

  2. クイックヒント:ImageMagickを使用してコマンドラインで画像を変換する

  3. Minikube でローカル docker イメージを使用するには?