Skrypt w bash-u wykonujący operacje na plikach zdjęciowych.

Skrypt w bash-u wykonujący operacje na plikach zdjęciowych.
Piotr Salmo
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1
0

Hej, chcę napisać skrypt, który:
-skopiuje pliki w formacie JPEG/PNG
-Zmieni duże litery rozszerzeń na małe
-Zastąpi spacje na podkreślenia
-zmieni rozmiar zdjęć do wskazanego argumentem podanym w wywołaniu skryptu
-utworzy archiwum z tak przygotowanych plików
Jedynie co napisałem to:

Kopiuj
#!/bin/bash

#Zamiana  .JPEG i .PGN na .jpeg i .pgn

for i in *.JPEG; do mv "$i" "${i/.JPEG}".jpeg; done
for i in *.PNG; do mv "$i" "${i/.PNG}".png; done

#Zamiana spacji na podkreślenia

for file in *; do mv "$file" `echo $file | tr ' ' '_'` ; done
  1. Efekt działania jak na obrazku.
hauleth
  • Rejestracja: dni
  • Ostatnio: dni
0
  1. Nigdy nie używaj for i in *.JPEG bo to zapewne wyłoży się właśnie na spacjach.
  2. Używaj find -print0 jeśli musisz.
  3. Rób najwięcej jak się da na raz.

IMHO jeśli musi być w Bashu to najłatwiej będzie zrobić sobie 2 skrypty:

Kopiuj
#!/bin/bash
# convert.sh

old="$1"
new="$(echo "$old" | sed <<SED
s/\s/_/g
s/JPEG/jpeg/
s/JPG/jpg/
s/PNG/png/
SED)"
size="$2"

convert "$old" -resize "$size" "$new" && rm "$old"

echo "$new"

I wtedy odpalić to przy pomocy:

Kopiuj
find -E . -iregex '.*\.(png|jpe?g)$' -print0 | xargs -0 -P4 bash ./convert.sh '{}' 1024x768 | tar -czf archive.tgz

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.