Shellscript zum Verschieben von Verzeichnissen

Post Reply
Message
Author
Malit

Shellscript zum Verschieben von Verzeichnissen

#1 Post by Malit »

Hallo, vielleicht kann mir jemand mal paar Anregungen geben. Hier die Aufgabe.
Es soll in einem großem Verzeichnisbaum alle Verzeichnisse gefunden werden, deren Verzeichnisname einer Jahreszahl entspricht. (z.B. 1988, 1999). Die gefundenen Verzeichnise
sollen um ein Ebene nach oben verschoben werde. Die zu verschiebenden Verzeichnise sind nicht leer. Es kommt dabei die tcsh zum Einsatz. Mit find funktioniert das auffinden der Verzeichnisse schon, aber irgendwie klappt es nicht diese Infos auch zu verwerten.
Foreach geht nicht, eine Pipe hab' ich nicht hinbekommen etc. Hat jemand eine Idee?
Danke für Eure Bemühungen.
Malit

Jochen

Re: Shellscript zum Verschieben von Verzeichnissen

#2 Post by Jochen »

tcsh habe ich nie richtig zum Skripten gemocht... Nicht Fisch und nicht Fleisch, die Syntax. Aber egal:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">#!/bin/tcsh

foreach DIR ( `find . -type d -name '[<!--no-->0-9][<!--no-->0-9][<!--no-->0-9][<!--no-->0-9]' -depth -print` )
set PATH_OF_DIR=`dirname $DIR`
( cd $PATH_OF_DIR ; mv $DIR .. )
end
</font><hr></pre></blockquote>
Die foreach-Schleife setzt einen vom find gefundenen Verzeichnisnamen pro Schleifendurchlauf in DIR. PATH_TO_DIR wird auf den Pfad-Anteil des Verzeichnissnamens gesetzt. In der mit runden Klammern gestarteten Subshell wird in das Verzeichnis gewechselt, in der das gefundene Verzeichnis steht und eine Ebene jöher gemovet. Das cd-Kommando betrifft nur die Subshell, daher steht das Skript zum nächsten Schleifedurchlauf wieder im Start-Arbeitsverzeichnis. Ob die Verzeichnisse leer sind oder nicht, sollte durch die "-depth"-Option zum find gegessen sein; mv macht zumindest unter Linux keine Schwierigkeiten dabei.

Und im übrigen ist die man-Page zu tcsh undurchsichtig. <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">

Jochen

Malit

Re: Shellscript zum Verschieben von Verzeichnissen

#3 Post by Malit »

Danke Jochen!
Die tcsh ist nicht meine Idee, das ganze läuft auf MacOSX. (Eine Bash ist mir auch lieber)
Wieso die Klammern in der 3. Zeile?

Malit

Malit

Re: Shellscript zum Verschieben von Verzeichnissen

#4 Post by Malit »

An Jochen, vergiß die Frage nach den Runden Klammern. Hatte Deinen Kommentar übersehen.
Malit

Post Reply