Script - Rarfiles erstellen - für jedes verzeichniss

Bash, Shell, PHP, Python, Perl, CGI
stormcrow
Posts: 15
Joined: 2006-11-17 17:57

Script - Rarfiles erstellen - für jedes verzeichniss

Post by stormcrow » 2006-11-17 18:05

Hallo,

ich hoffe das mir hier jemand helfen kann - Da ich mich erst seit rund 2 Monaten intensiv mit Linux beschäftige sind meine kenntnisse noch nicht so berauschend daher würde ich gerne mal eure Hilfe in Anspruch nehmen :-)

Ich bräuchte ein script welches in einem speziellen Verzeichniss fix numerierte unterverzeichnisse durchgeht (1,2,3,4,5,6,....) (keine ahnung wieviele das sein werden), in die einzelnen verzeichnisse reingeht, die files welche da drinnen sind packt (RAR), das verzeichniss verlässt und mit den Nächsten Verzeichniss weitermacht.


Mein Gedankengang .....

1.) Ich brauch eine funktion welche mal überprüft welche verzeichnisse existieren und diese dann in ein array speichert. (keine ahnung wie das aussehen soll)
2.)
cd $Verzeichniss
rar <parameter>
cd ..

usw.

ich nehme gerne ideen an und im notfall auch ein fertiges script aber mir wären lösungsansätze bzw. eine hilfe mal lieber so das ich das ganze auch verstehe :-)

Danke mal im Vorraus.


lg

User avatar
Joe User
Project Manager
Project Manager
Posts: 11138
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Script - Rarfiles erstellen - für jedes verzeichniss

Post by Joe User » 2006-11-17 18:09

PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

stormcrow
Posts: 15
Joined: 2006-11-17 17:57

Re: Script - Rarfiles erstellen - für jedes verzeichniss

Post by stormcrow » 2006-11-17 18:13

*HUST*

lernen möchte ich schon aber nicht gleich alles auf einmal :-) (Die seite hab ich aber mal in einem anderen fenster offen und gebookmarkt).

Ansätze oder infos wonach ich suchen soll wären da etwas besser.

momentan lese ich mir grad die man page vom find durch.

mit find -empty hab ich mal die verzeichnisse (wenn ich das richtig verstanden habe.

kann mir mal jemand sagen wie ich so ein array per .sh erstelle und die ausgabe von find dort reinspeichern kann?

also find -empty > $IRRGENDWAS würde ja alles auf einmal in diese variable reinspeichern.


danke im vorraus.

lucki2
Posts: 427
Joined: 2006-10-03 01:31

Re: Script - Rarfiles erstellen - für jedes verzeichniss

Post by lucki2 » 2006-11-17 20:58

kann mir mal jemand sagen wie ich so ein array per .sh erstelle und die ausgabe von find dort reinspeichern kann?
Schon, bringt nur nix:

Code: Select all

dasarray=`find -empty`
also find -empty > $IRRGENDWAS würde ja alles auf einmal in diese variable reinspeichern.
Unfug, damit hast
a) eine Fehlermeldung bekommen
b) irgendwelche Dateien überschrieben(Weiß ja nicht was da in $IRRGENDWAS drin stand).

stormcrow
Posts: 15
Joined: 2006-11-17 17:57

Re: Script - Rarfiles erstellen - für jedes verzeichniss

Post by stormcrow » 2006-11-17 21:55

Aha. danke hab mich mit

array = (`find -empty`) herumgeschlagen aber das hatte so nicht funktioniert.

ok jetzt ist das ganze mal hoffentlich im array drinnen und die kann ich wenn ich das richtig verstanden habe mit

dasarray[1] usw ansprechen.

(btw. hab ich schon mal geschrieben, ich hab von dem sogut wie keine ahnung? In den kursen die ich hinter mir habe wurde das ganze leider nur sowas von kurz angesprochen das ich da keine wirklichen informationen rausziehen konnte.

Aber ok. ich hab jetzt mal die verzeichnisse in diesem array. jetzt muss das ganze abgearbeitet werden.

cd <Verzeichniss>
rar <parameter>
cd ../<Verzeichniss>


aehm .... ich hab jetzt echt keine ahnung mehr. (jaja ich hatte nie eine ^^) - ich weiss leider nicht wie das ganze in dem array abgearbeitet wird - ich hab keine ahnung wie das aussehen soll -> ich habe keine ahnung wie ich das ganze in anderen scripten finden soll :-(

könnte mal wieder bitte jemand so nett sein? :-)

juergen
Posts: 133
Joined: 2004-03-30 14:44

Re: Script - Rarfiles erstellen - für jedes verzeichniss

Post by juergen » 2006-11-17 22:18

in diese Richtung:

Code: Select all

find /path -type d -name "[[:digit:]]" -execdir DEINRARKOMMANDO "{}" ";"
Findet aber nur Directories mit einstelligen Zahlen...Das musst du noch entsprechend erweitern.

lucki2
Posts: 427
Joined: 2006-10-03 01:31

Re: Script - Rarfiles erstellen - für jedes verzeichniss

Post by lucki2 » 2006-11-17 23:02

Code: Select all

array=(`find -empty`)
ginge schon(die Zuweisung!) - wenn Du die indizies brauchst.
Sonst:

Code: Select all

dasarray=`find -empty`
for i in $dasarray ; do echo "$i" ; done
aber ob das zum Ziel führt:Zweifel ...
jürgens Beispiel hilft Dir vielleicht mehr weiter als das Spielen mit indizies. Aber wie Du willst ...

stormcrow
Posts: 15
Joined: 2006-11-17 17:57

Re: Script - Rarfiles erstellen - für jedes verzeichniss

Post by stormcrow » 2006-11-18 11:05

Danke mal für eure infos ....

also ich hab es mal so probiert

dasarray=`find -maxdepth 1 -type d -print0 `
for i in $dasarray ; do cd "$i" ; /home/pgw/Tools/rar/rar a "$i" . ; cd .. ; done

mit dem -empty bei find komme ich ja nicht sehr weit da ja nur leere verzeichnisse angezeigt werden :-) - also hab ich den befehl mal abgeändert.
Jetzt hab ich aber das problem, das er mir ./abc ./bcd usw anzeigt. mit dem ./ hab ich ja dann ein problem. Ich versuch mich schon die ganze zeit durch cut und awk durchzulesen aber ich seh mich da nicht so ganz aus.

kann mir bitte jemand sagen wie ich das ./ rauswerfen kann? :-) also find -maxdepth 1 -type d -print0 | <befehl>

danke.

juergen
Posts: 133
Joined: 2004-03-30 14:44

Re: Script - Rarfiles erstellen - für jedes verzeichniss

Post by juergen » 2006-11-18 11:43

-print0 solltest du nur verwenden, wenn das Programm, das du über die Pipe-Verbindest auch mit 0-Terminierten Argumenten umgehen kann, also z.b. xargs -0.

Du solltest es übrigens nicht unnötig kompliziert machen:Du kannst mit -execdir für jedes Gefundene Ergebnis ein Programm aufrufen. Cut/awk brauchst du für diese Aufgabenstellung nicht.

User avatar
Joe User
Project Manager
Project Manager
Posts: 11138
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Script - Rarfiles erstellen - für jedes verzeichniss

Post by Joe User » 2006-11-18 11:49

Code: Select all

dasarray="$(ls -Ap | grep / | sed 's|/$||g')"
for i in $dasarray; do
 cd "$i" &&
 /home/pgw/Tools/rar/rar a "$i" . &&
 cd ..;
done
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

juergen
Posts: 133
Joined: 2004-03-30 14:44

Re: Script - Rarfiles erstellen - für jedes verzeichniss

Post by juergen » 2006-11-18 12:28

Code: Select all

find /DEINPFADZUDENDIRS -type d -name "[[:digit:]]" -o -name "[[:digit:]][[:digit:]]" -execdir rar a -r  /{}.rar {}  ;
Erstellt rar-Files im jeweiligen Parent Verzeichnis. Funktioniert so mit 1- und 2-stelligen Dezimalzahlen. Mit Shell-Globbing geht das leider nicht eleganter.

lucki2
Posts: 427
Joined: 2006-10-03 01:31

Re: Script - Rarfiles erstellen - für jedes verzeichniss

Post by lucki2 » 2006-11-19 02:57

Das ist perfekt. Mit einem -maxdepth 1 dazu ist es ganz perfekt. Sonst bekommst Du Doppel(find und rar sind da rekursiv *g* ).
Dann tut

Code: Select all

for i in  DEINPFAD/{[0-9],}[0-9]/ ; do rar a -r `basename $i`.rar ${i%%/}; done
selbiges. 8)
noch dreistellige dazu:

Code: Select all

for i in  DEINPFAD/{[0-9],[0-9][0-9],}[0-9]/ ; do rar a -r `basename $i`.rar ${i%%/}; done
und dann ist da noch jener hier, dann ist's aber gut:

Code: Select all

shopt -s extglob; for i in  DEINPFAD/*([0-9])/ ; do rar a -r `basename $i`.rar ${i%%/}; done

stormcrow
Posts: 15
Joined: 2006-11-17 17:57

Re: Script - Rarfiles erstellen - für jedes verzeichniss

Post by stormcrow » 2006-11-22 09:58

Hallo,

war leider krank und war nicht wirklich in der lage das ganze durch zu testen.
Jetzt mal schnell die Arbeit aufarbeiten und dann schau ich mir das ganze gleich an.

Danke mal für die Hilfe bis jetzt!


lg