Oli vaja võrrelda kahte pildikataloogi, millest ühes olid JPG faili, teises CR2 failid. Vaja oli kustutada need CR2 failid, millel ei olnud vasted JPG failide kataloogis. Failide nimed olid muidu identsed, aga faililaiendid loomulikult erinevad. Võrrelda tuligi niisiis failidel ainult nimeosa, ignoreerides laiendit.
Kataloogide võrdlemiseks ja vajalike failide kustutamiseks sai järgmine skript:
#/bin/bash #Defineerime muutujatena vajalikud kataloogid a=Raw-pildid/2022/20220706 b=Pildid/2022/20220706 #Siit edasi pole vaja muuta for file in `ls $a/` ; do ls $b/${file:0:8}*.JPG >/dev/null 2>/dev/null if [ $? -ne 0 ] ; then echo "fail $a/$file on, $b/${file:0:8}.JPG puudub" #Kui tahad otsida, mitte kustutada, pane järgnevale kahele reale # ette rm $a/$file echo "$a/$file kustutatud" fi done
Selle koodi kohta ka selgitus:
1. Defineeritakse muutujad:
muutuja a
on toorpiltide kataloog, kus on rohkem faile
muutuja b
on jpg piltide kataloog, kus on vähem faile.
Muutujate defineerimise read ei tohi sisaldada tühikuid!
2. Võrreldakse katalooge ju kuvatakse ekraanile failid, mis jpg piltide kataloogis puuduvad.
3. Puuduvad failid kustutatakse ja antakse ka ekraanile tagasisidet, et need kustutati.
Lisa kommentaar