06.05.2024, 21:21 UhrDeutsch | English
Hallo Gast [ Registrierung | Anmelden ]
find_usb_path
Ein Bash-Script, welches alle usb-devices bzw. alle windows Laufwerke, nach einem vorgegebenen Verzeichnis durchsucht.

Ich würd mich über rege Benutzung des Scripts freuen, und natürlich auch über Verbesserungen, bzw Verbesserungsvorschläge. ;-)

Ich habe hier ein erweitertes Beispiel aufgeführt, um Daten von einer Digitalkamera auf eine USB Festplatte zu verschieben.

Installation

Die Skripte per cut&paste in einen Editor übertragen und speichern. Voraussetzung für das Funktionieren der Anwendung ist, das die Scripte in ein Verzeichnis kopiert werden, welche im Suchpfad der shell liegen, und das sie auch Ausführrechte haben.

Dafür wird benötigt:

1.) output_format.sh sorgt für farbige ausgaben

:code:(bash)
#!/bin/bash

red="\033[31m" red_bg="\033[41m"
green="\033[32m" green_bg="\033[42m"
yellow="\033[33m" yellow_bg="\033[43m"
blue="\033[34m" blue_bg="\033[44m"
magenta="\033[35m" magenta_bg="\033[45m"
ende="\033[0m\n"
ende1?="\033[0m"
:code:

2.) find_os.sh Betriebssystem abfragen

:code:(bash)
#! /bin/bash

# Welches Betriebssystem wird verwendet?
#


find_os(){
if test -d "c:/"; then
operating_system="windows";
else
operating_system="linux";
fi
}
:code:

3.) find_usb_path.sh das besagte Script...

:code:(bash)
#!/bin/bash

# USB Device/Windowslaufwerke abfragen
#
find_usb_path(){
mountpath="mnt/sd"
usb_path= extjpg="*.[jJ][pP][gG]" find_linux_device(){ if test -d "$HOME/${drive_directory}"; then usb_path="$HOME/${drive_directory}" else # suche in USB Devices for i in a b c d e f g h i j k l m n o p q r s t x y z do if test -d /${mountpath}${i}1/${drive_directory}; then usb_path="/${mountpath}${i}1/${drive_directory}" fi done fi } find_win_drive(){ mountpath=
for i in c d e f g h i j k l m n o p q r s t x y z
do
if test -d ${mountpath}${i}:/${drive_directory}; then
usb_path="${mountpath}${i}:/${drive_directory}"
fi
done
}

select_os(){
case "${operating_system}" in
'windows')
find_win_drive
iview_app="xnview"

;;
'linux')
find_linux_device
iview_app="xnview"
;;
*)
echo -e "${red_bg}nicht erkanntes OS!${operating_system}${ende1?}";
exit
;;
esac
}

meldungen(){
# pfad vorhanden?
if test -d "${usb_path}"; then
echo -e "pfad: ${red}${usb_path}${ende1?} für ${green}${drive_directory}${ende1?} vorhanden"
else
echo -e "pfad für ${green}${drive_directory}${ende1?} ${red_bg}nicht${ende1?} vorhanden ${red_bg}beende${ende1?} script"
exit
fi
}
find_os
select_os
meldungen
}
:code:

4.) digia.sh in der praktischen Anwendung aller Schripte zusammen.

:code:(bash)
#! /bin/bash

#-Bilder von Digitalkamera nach USB Festplatte verschieben, Ordner werden Chronologisch benannt-#

# Features
#

# 1. Alle usb Devices unter Linux bzw. alle Laufwerke(c:-z:) unter Windows nach einem hier vorgegebenen
# Ziel-Verzeichnis durchsuchen, bzw. nach der Kamera suchen.
# 2. ein Verzeichnis mit dem aktuellen Datum erzeugen.
# Wenn schon ein Verzeichnis mit dem aktuellen Datum existiert, dann ein weiteres anlegen,
# aber zusätzlich mit der Uhrzeit im Verzeichnisnamen.
# 3. Bilder bzw. Filme von der Kamera, in das angelegte Verzeichnis verschieben.
# 4. ein Bild-Betrachtunsprogramm mit dem Zielverzeichnis starten
# 5. Wenn alle verschobenen Bilder Filme gelöscht werden, das heist das Verzeichnis wider leer ist
# wird das Verzeichnis wider gelöscht.

# Konfiguration

#quell und zielverzeichnisse anpassen
#


kamera_bild_wurzel_verzeichnis="dcim"
kamera_bildverzeichnis="100media"
ziel_verzeichnis="jpeg_avi_karl"


. output_format.sh
. find_os.sh
. find_usb_path.sh


parameter_1="${1}"
datum=`date +%Y.%m.%d`
datum_erweitert=`date +%Y.%m.%d.%H.%M`

clear

make_date_dir(){
if test -d "${maxtor_usb}/${datum}"; then
echo -e "${red}${maxtor_usb}/${datum}${ende1?}${green} bereits angelegt${ende1?}"
if test -d "${maxtor_usb}/${datum_erweitert}"; then
echo -e "${red}${maxtor_usb}/${datum_erweitert}${ende1?}${green} bereits angelegt${ende1?}"
else
echo -e "${red}${maxtor_usb}/${datum_erweitert}${ende1?} ${green}wird angelegt${ende}"
mkdir "${maxtor_usb}/${datum_erweitert}"
fi
else
mkdir "${maxtor_usb}/${datum}"
fi
}

move_media(){
dig_pfad="${digicam_usb}/*.*"

if test -d "${maxtor_usb}/${datum_erweitert}"; then
mv -v ${dig_pfad} ${maxtor_usb}/${datum_erweitert}
${iview_app} "${maxtor_usb}${datum_erweitert}"
else
mv -v ${dig_pfad} ${maxtor_usb}/${datum}
${iview_app} "${maxtor_usb}${datum}"
fi
}

kamera_leer(){
if test `ls ${digicam_usb} -a|wc -l` -eq 2; then
echo -e "${red}keine Daten auf ${ende1?}${digicam_usb}\n"
find ${maxtor_usb} -depth -type d -exec rmdir {} \; 2>/dev/null
else
echo -e "${red}Daten auf ${ende1?}${digicam_usb} ${red}werden verschoben${ende1?}"
move_media
fi
}


if test -d "${parameter_1}"; then
maxtor_usb="${parameter_1}"
echo -e "Zielverzeichnis:${red}${maxtor_usb}${ende1}"
else
drive_directory="${ziel_verzeichnis}"
find_usb_path
maxtor_usb="${usb_path}"

fi

drive_directory="${kamera_bild_wurzel_verzeichnis}"
find_usb_path
digicam_usb="${usb_path}/${kamera_bildverzeichnis}"

make_date_dir
kamera_leer
:code:

XML Revisions of $tag
Seiten-History :: Letzter Editor : LastWeb :: Eigentümer : LastWeb ::
Powered by pnWikka 1.0
 
 
Deutsch | English
Logos and trademarks are the property of their respective owners, comments are property of their posters, the rest is © 2004 - 2006 by Jörg Schirottke (Kano).
Consult Impressum and Legal Terms for details. Kanotix is Free Software released under the GNU/GPL license.
This CMS is powered by PostNuke, all themes used at this site are released under the GNU/GPL license. designed and hosted by w3you. Our web server is running on Kanotix64-2006.