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

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:

#!/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.
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:

#!/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:

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1