GNU/Linux >> Znalost Linux >  >> Linux

Jak otočit všechny obrázky v adresáři pomocí Imagemagick?

Chci otočit všechny obrázky v adresáři, které odpovídají vzoru.

Zatím mám:

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

ale to nedává žádný výstup?

Přijatá odpověď:

S vaším kódem je poměrně dost problémů. Za prvé, analyzujete ls, což je špatný nápad. Musíte také odkazovat na proměnnou jako $file jak uvádíte a měli byste to také citovat, aby se nerozbil na mezerách. Deklarujete num ale nikdy se nepoužívá. Bezpečnější způsob by byl:

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

To bude mít stále problémy, pokud vaše soubory obsahují nové řádky, ale alespoň se nepřeruší, pokud vaše cesta obsahuje mezery.

Pokud jsou všechny soubory ve stejném adresáři, lze to dále zjednodušit pomocí globbingu. K vytvoření foo_rotated.JPG1 můžete také použít rozšíření parametrů místo foo.JPG_rotated.JPG :

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

Linux
  1. Jak nainstalovat ImageMagick na Amazon Linux

  2. Jak spravovat uživatele pomocí useradd v linuxu

  3. Jak přeinstalovat všechny nainstalované balíčky pomocí Zypper?

  1. Jak odstranit uživatelské účty pomocí domovského adresáře v systému Linux

  2. Jak používat regex s příkazem find?

  3. Jak najít všechny soubory s konkrétním nadřazeným adresářem v linuxu?

  1. Jak vytvořit sdílený adresář pro všechny uživatele v Linuxu

  2. Rychlý tip:převádějte obrázky na příkazovém řádku pomocí ImageMagick

  3. Jak odstranit všechny soubory s konkrétní příponou v konkrétní složce?