/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Mv med backup - men beholde extension?
Fra : Steen Suder


Dato : 22-10-11 14:14

Jeg vil sortere billeder fra diverse kameraer ud i directories med år og
måned (baseret på Exif-data).

Nemt, men scriptet skal håndtere at en destinationsfil findes.
Det kan gøres med mv's backup-funktion, men siden fil-extensions ikke er
et Unix-koncept, får man nogle - i flere sammenhænge - ubrugelige
extensions.

Findes der en move-kommando, der kan håndtere dette?

--
Steen Suder

 
 
Steen Suder (23-10-2011)
Kommentar
Fra : Steen Suder


Dato : 23-10-11 21:39

On 22-10-2011 15:14, Steen Suder wrote:
> Jeg vil sortere billeder fra diverse kameraer ud i directories med år og
> måned (baseret på Exif-data).
>
> Nemt, men scriptet skal håndtere at en destinationsfil findes.
> Det kan gøres med mv's backup-funktion, men siden fil-extensions ikke er
> et Unix-koncept, får man nogle - i flere sammenhænge - ubrugelige
> extensions.
>
> Findes der en move-kommando, der kan håndtere dette?
>

Mit bedste bud indtil videre er herunder.
Jeg er ikke programmør

#!/bin/sh

# Goes through all jpeg files in current directory, grabs date from each
# and sorts them into subdirectories according to the date
# Creates subdirectories corresponding to the dates as necessary.

EXPECTED_ARGS=1
E_BADARGS=65

if [ $# -ne $EXPECTED_ARGS ]
then
echo "Usage: `basename $0` {arg}"
exit $E_BADARGS
fi

destroot=$(echo $1 | sed "s/\/*$//")

for fil in `find -maxdepth 1 -iname *.jpg -exec basename '{}' \; | sort`
do
datepath="$(identify -verbose $fil | grep DateTimeOri | cut
-b28-37| cut -d: -f1-2 | sed s%:%/%g)"

if ! test -e "$destroot/$datepath"; then
mkdir -pv "$destroot/$datepath"
fi

num=1;
newfil=$fil
while [ -f "$destroot/$datepath/$newfil" ]
do
if cmp -s $fil $destroot/$datepath/$newfil; then
break
else
newfil=$(echo $fil | sed
"/jpe*g/Is/\(.*\).\(jpe*g\)/\1_$num.\2/I")
num=`expr $num + 1`
fi
done
mv -v $fil $destroot/$datepath/$newfil


done

Ovenstående gør hvad jeg vil have.


--
Steen Suder

Ivar Madsen (24-10-2011)
Kommentar
Fra : Ivar Madsen


Dato : 24-10-11 07:43

Steen Suder wrote:

Min far har fået mange kopier, mange steder, med de samme foto, vil dit
script kunne finde i sub-dirs også?

Kan jeg lokke dig til at udvide det med funktion til at lægge dubletter et
andet sted?

> On 22-10-2011 15:14, Steen Suder wrote:
>> Jeg vil sortere billeder fra diverse kameraer ud i directories med år og
>> måned (baseret på Exif-data).
>>
>> Nemt, men scriptet skal håndtere at en destinationsfil findes.
>> Det kan gøres med mv's backup-funktion, men siden fil-extensions ikke er
>> et Unix-koncept, får man nogle - i flere sammenhænge - ubrugelige
>> extensions.
>>
>> Findes der en move-kommando, der kan håndtere dette?
>>
>
> Mit bedste bud indtil videre er herunder.
> Jeg er ikke programmør
>
> #!/bin/sh
>
> # Goes through all jpeg files in current directory, grabs date from each
> # and sorts them into subdirectories according to the date
> # Creates subdirectories corresponding to the dates as necessary.
>
> EXPECTED_ARGS=1
> E_BADARGS=65
>
> if [ $# -ne $EXPECTED_ARGS ]
> then
> echo "Usage: `basename $0` {arg}"
> exit $E_BADARGS
> fi
>
> destroot=$(echo $1 | sed "s/\/*$//")
>
> for fil in `find -maxdepth 1 -iname *.jpg -exec basename '{}' \; | sort`
> do
> datepath="$(identify -verbose $fil | grep DateTimeOri | cut
> -b28-37| cut -d: -f1-2 | sed s%:%/%g)"
>
> if ! test -e "$destroot/$datepath"; then
> mkdir -pv "$destroot/$datepath"
> fi
>
> num=1;
> newfil=$fil
> while [ -f "$destroot/$datepath/$newfil" ]
> do
> if cmp -s $fil $destroot/$datepath/$newfil; then
> break
> else
> newfil=$(echo $fil | sed
> "/jpe*g/Is/\(.*\).\(jpe*g\)/\1_$num.\2/I")
> num=`expr $num + 1`
> fi
> done
> mv -v $fil $destroot/$datepath/$newfil
>
>
> done
>
> Ovenstående gør hvad jeg vil have.
>
>

--
Med venlig hilsen

Ivar Madsen

Leif Neland (24-10-2011)
Kommentar
Fra : Leif Neland


Dato : 24-10-11 09:16


"Ivar Madsen" <news@milli.dk> skrev i en meddelelse
news:4ea508e6$0$286$14726298@news.sunsite.dk...
> Steen Suder wrote:
>
> Min far har fået mange kopier, mange steder, med de samme foto, vil dit
> script kunne finde i sub-dirs også?
>
Bare husk at tage højde for, at nogle kameraer starter forfra i
nummereringen, hvis man tømmer kortet helt (eller skifter kort)
Så der kan findes forskellige IMG0012345.JPG i forskellige mapper.

For at være sikker på at det er det samme billede, må man lave en diff på
dem; er der mange billeder, man skal finde dubletter i, må man til at lave
en liste over størrelsen og evt checksum, og derefter sammenligne de
billeder med samme størrelse og checksum med diff.

Leif



Martin Larsen (27-10-2011)
Kommentar
Fra : Martin Larsen


Dato : 27-10-11 20:11

Leif Neland wrote:

> For at være sikker på at det er det samme billede, må man lave en diff på
> dem; er der mange billeder, man skal finde dubletter i, må man til at lave
> en liste over størrelsen og evt checksum, og derefter sammenligne de
> billeder med samme størrelse og checksum med diff.

Dertil er Total Commander fantastisk. Og ja, den kører fint under wine :)

Martin Larsen (27-10-2011)
Kommentar
Fra : Martin Larsen


Dato : 27-10-11 20:37

Steen Suder wrote:

> Jeg vil sortere billeder fra diverse kameraer ud i directories med år og
> måned (baseret på Exif-data).

Kender du exiftool? Det kan stort set alt hvad angår exifdata og andre
metatags.

http://www.sno.phy.queensu.ca/~phil/exiftool/

Denne kommando sorterer ud efter exif-dato:

exiftool '-Directory<DateTimeOriginal' -r -d %Y/%m/%d .

Dog håndtererer den ikke dubletter - de springes blot over. Men det kan
løses ved noget grep'ning af outputtet.

Jeg har aldrig har problemer med dubletter men kan godt se at det kan
ske, så jeg vil skrive til manden og se om han kan tilføje en
autorename-funktion.

Mogens Kjaer (28-10-2011)
Kommentar
Fra : Mogens Kjaer


Dato : 28-10-11 06:53

On 10/27/2011 09:36 PM, Martin Larsen wrote:
> Jeg har aldrig har problemer med dubletter men kan godt se at det kan
> ske, så jeg vil skrive til manden og se om han kan tilføje en
> autorename-funktion.

- eller lav en patch der kan dette og send den til manden?

Mogens

--
Mogens Kjaer, mk@lemo.dk
http://www.lemo.dk

Martin Larsen (28-10-2011)
Kommentar
Fra : Martin Larsen


Dato : 28-10-11 08:58

Mogens Kjaer wrote:

> - eller lav en patch der kan dette og send den til manden?

Det har jeg desværre ikke tid til...

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste