Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
no_Legend
- Beiträge: 57
- Registriert: 29.01.2006 11:00:57
Beitrag
von no_Legend » 14.07.2006 13:38:05
Hi ich brauch mal hilfe bei nem Script.
Also es ist eigentlich ganz einfach es soll bestimmte Dateien also mit bestimmten Endungen in einen neu erstelltes verzeichniss verschiebt.
Das mit dem Verschieben hab ich mir so gedacht:
Code: Alles auswählen
#!bin/sh
######Begin der User Config######
#########################################################
######Variablen für die Aktion######
#Quell Verzeichnis
qpath=/hdd/hdd1/02_filesharing/01_fertig/
filetyps=*.mp3
#Ziel Verzeichnis
dirname=
dirdate=`date +%Y-%m-%d`
#Für nur KW hinter dem Jahr `date +%Y_-_%V` alles hinter = ersetzen
tpath=/hdd/hdd1/05_archiv/08_Mp3z/
######End of User Config######
#########################################################
######Erzeugen des Ordner mit dem heutigem Datem
mkdir $tpath$dirdate
######Verschieben der gewünschten Dateien
mv $qpath$filetyps $tpath$dirdate
Nun wollte ich aber noch das vorher überhaupt erst mal geprüft wird ob Dateien zum verschieben vorhanden sind. Und genau hier liegt mein Problem, ich hab keine Ahnung wie ich das anstellen soll.
Ich hoffe mir kann jemand helfen
-
roli
- Beiträge: 3174
- Registriert: 10.09.2003 17:39:58
Beitrag
von roli » 14.07.2006 13:50:54
Hi,
schau dir mal das Manual zu "find" an, damit solltest du dein Problem loesen koennen.
Roland
"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"
-
no_Legend
- Beiträge: 57
- Registriert: 29.01.2006 11:00:57
Beitrag
von no_Legend » 14.07.2006 14:11:32
Hab ich schon gemacht das mit dem find ist mir schon klar nur ich hab keine ahnung wie ich das in nen if packen soll.
Hab nur ein wenig erfahrung in C und nicht im Linux Scripting, macht mir irgen wie noch probleme.
-
roli
- Beiträge: 3174
- Registriert: 10.09.2003 17:39:58
Beitrag
von roli » 14.07.2006 14:20:45
Hi,
du koenntest find ja direkt nur nach den Dateien suchen lassen die die von dir gesuchte Endung haben, dann brauchst du kein "if" mehr.
Roland
"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"
-
ToPeG
- Beiträge: 437
- Registriert: 14.04.2004 00:42:06
Beitrag
von ToPeG » 14.07.2006 14:21:35
Warum immer so kompliziert?
Code: Alles auswählen
if ls $qpath$filetyps 2>&1 1>/dev/null ; then
######Erzeugen des Ordner mit dem heutigem Datem
mkdir $tpath$dirdate
######Verschieben der gewünschten Dateien
mv $qpath$filetyps $tpath$dirdate
fi
-
no_Legend
- Beiträge: 57
- Registriert: 29.01.2006 11:00:57
Beitrag
von no_Legend » 14.07.2006 14:39:04
@ToPeG
Kannst du mir das ganze einwenig erklären?
Also ls sucht die Dateien mit Endung *.mp3
und das ganze danach mit dem 2> usw was macht das denn?
-
ToPeG
- Beiträge: 437
- Registriert: 14.04.2004 00:42:06
Beitrag
von ToPeG » 14.07.2006 15:16:58
"if" überprüft nur ob ein Programm mit einem Staus ungleich 0 abgebrochen wurde, oder nicht. Bei einem Status gleich 0 lief das Programm sauber durch und if führt den Codeblock aus.
Wenn "ls" keine passenden Dateien findet bricht es mit einer Fehlermelung ab und einem Status ungleich 0. Die ganzen Ausgaben interessieren uns hier nicht, allso leite ich STDERR (Kanal 2) nach STDOUT (Kanal 1) um und schicke STDOUT (Kanal 1) ins Nirvana (/dev/null)
Allso wenn "ls" Dateien im entprechenden Ordner findet, das mit ".mp3" enden, so wird das Zielverzeichnis erstellt und alle "*.mp3" dorthin kopiert.
Ich hoffe das war verständlich...