GorkhaanCsak ha nem lesz röhögés! :-)
Egy Canon PS G3 fényképezőgépről van szó amit nem lehet "Pendrive"-ként kezelni, tehát nem a /mnt vagy /media könyvtárak alá csatolódik, hanem a /home/[user]/.gvfs/[valamilyen név ami gphoto2-vel kezdődik] alá. Ráadásul a fényképezőgép DCIM könyvtára alatt is sok egyéb könyvtárba teszi le a képeket. Ezért kellett egy "kicsit" kitekert módon megoldanom néhány dolgot, valamint azért mert nem értek hozzá! :-)
A kód:
A DIR változóban kell megadni, hova másolja a képeket!
#!/bin/bash
#-------------------------------------------------------
DIR='/home/[user]/Képek'
SORSZAM=0
DBM=0
DBK=0
NUM_FILES=0
#-------------------------------------------------------
function spacer()
{
local LEN
local SPACEK=" "
LEN=${#1} # strlen
let LEN=$2-$LEN
SPC=${SPACEK:0:$LEN}
}
#-------------------------------------------------------
#-------------------------------------------------------
clear
echo
echo =============================================================================
echo
echo "Analizálás.... "
SOURCE=`ls ~/.gvfs | grep gphoto2`
SOURCEDIR=~/.gvfs/$SOURCE/DCIM
if [ -z "$SOURCE" ]; then
echo
echo A fényképezőgép nincs csatlakoztatva!
echo
echo =============================================================================
echo
exit
fi
cd "$SOURCEDIR"
FILES=`find -maxdepth 5 -type f -true -iregex '\(.*\.jpg\|.*\.crw\)' -printf '%p %f %TY-%Tm-%Td %s\n'`
NUM_FILES=`find -maxdepth 5 -type f -true -iregex '\(.*\.jpg\|.*\.crw\)' -printf '%p %f %TY-%Tm-%Td %s\n' | wc -l`
echo "$FILES" > /tmp/fotok
if [ $NUM_FILES -eq 0 ]; then
echo
echo Összes fotó: $NUM_FILES db.
echo Nincs másolandó file!
echo =============================================================================
echo
else
echo
echo Összes fotó: $NUM_FILES db.
echo
while read name dest_name date size; do
let SORSZAM+=1
if [ ! -d $DIR/$date ]; then
mkdir -p $DIR/$date
fi
if [ ! -f $DIR/$date/$dest_name ]; then
let DBM+=1
spacer $dest_name 13
DEST_NAME_SPC=$SPC
printf "$NUM_FILES/$SORSZAM\t $dest_name$DEST_NAME_SPC\t -> $date másolása... \b\b\b"
cp -p $name "$DIR/$date/$dest_name"
printf "OK! "
else
let DBK+=1
spacer $dest_name 13
DEST_NAME_SPC=$SPC
printf "$NUM_FILES/$SORSZAM\t $dest_name$DEST_NAME_SPC\t -> $date már átmásolva! "
fi
printf "(%s byte)\t" $size
szazalek=$((( 100 * $SORSZAM ) / $NUM_FILES ))
printf "%4s%%\n" $szazalek
done < "/tmp/fotok"
echo
echo
echo Összesen: $NUM_FILES 'db Átmásolva:' $DBM 'db Átlépve:' $DBK db.
echo =============================================================================
echo
fi
Jééé benyelte a tabulátorokat....