• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Shellscript

michael_33

Member
Hallo,

ich versuche hier gearde ein script zu basteln, welches folgendes machen soll:

1. testen ob ein oder mehrere Verzeichnisser der Art /foo/100_???? existieren. Die ?? sollen als Platzhalter dienen.
2. wenn ja, dann sollen Verzeichnisse der Art /bar/2004???? angelegt werden und der Inhalt aus /foo/100_???? jeweils in das entsprechende Verzeichnis /bar/2004???? kopiert werden.

Irgendwie scheitere ich bereits an dem Test nach dem existierenden Verzeichnis!?

michael
 

oc2pus

Ultimate Guru
michael_33 schrieb:
Hallo,

ich versuche hier gearde ein script zu basteln, welches folgendes machen soll:

1. testen ob ein oder mehrere Verzeichnisser der Art /foo/100_???? existieren. Die ?? sollen als Platzhalter dienen.
2. wenn ja, dann sollen Verzeichnisse der Art /bar/2004???? angelegt werden und der Inhalt aus /foo/100_???? jeweils in das entsprechende Verzeichnis /bar/2004???? kopiert werden.

Irgendwie scheitere ich bereits an dem Test nach dem existierenden Verzeichnis!?

michael

so mal auf die schnelle ...
#!/bin/bash
function kopiereEinVerzeichnis ()
{
quelle=/foo/100_$1
ziel=/bar/100_$1

if [ -d $quelle ]; then
mkdir -p $ziel
cd $quelle
dateiListe=`ls -1 *`
for i in $dateiListe; do
# nur dateien keine subdirs, links etc kopieren
if [ -f $i ]; the
cp "$i" $ziel/"$i"
fi
done
cd ..
fi
}

kopiereEinVerzeichnis 01
kopiereEinVerzeichnis 02
....

und hier zum Selbststudium:
http://www.tldp.org/LDP/abs/html/
 

nobbiew

Hacker
Code:
if [ -d "/foo/100_????" ]
then
 	cp -r /foo/100_???? /bar/2004????
fi
ist die Antwort auf deine Frage. Aber ich denke das war nicht deine Frage. Ich denke du willst eher wissen, wie du auf ???? kommst

Code:
kopiereVerz(){
	SRC=$1;
	FROM="`echo $2|sed 's/\//\\\\\//g'`";
	TO="`echo $3|sed 's/\//\\\\\//g'`";
	
	DST="`echo $SRC| sed "s/$FROM/$TO/"`" 
 	if [ -d "${SRC}" ]
 	then
  		echo cp -r $SRC $DST
		cp -r "${SRC}" "${DST}"
	fi
	return
}


 for x in `ls -d /tmp/foo/100_????`
 do
 	kopiereVerz "$x" '/tmp/foo/100_' '/tmp/bar/2004'
 done
 

oc2pus

Ultimate Guru
@nobbiew
wenn man das als code postet, bleiben da die Einrückungen erhalten ?
ansonsten ;) du bist ja ein sed Künstler ... gefällt mir.
 

nobbiew

Hacker
si, die bleiben erhalten. Und eigentlich bin ich kein sed-künstler. Wenn's nach mir gegangen wäre hätte ich ihm ein kleines Perl-Kunststück gezeigt. Aber dann jammert er, er kann damit nichts anfangen.
 
OP
michael_33

michael_33

Member
nobbiew schrieb:
si, die bleiben erhalten. Und eigentlich bin ich kein sed-künstler. Wenn's nach mir gegangen wäre hätte ich ihm ein kleines Perl-Kunststück gezeigt. Aber dann jammert er, er kann damit nichts anfangen.

Hallo,

Danke erstmal, ich würde später nochmal nachfragen zu dem Script(kämpfe grad noch an einer anderen Front -> Evolution) und mit dem Perl hast Du natürlich recht. :)

grüsse
michael
 
Oben