#!/usr/bin/bash # ------------------------------------------------------------ # Dateiname: $Source: /ma/miwa/CvsRepository/mjm/tools/Development/mInitTree,v $ # Version: $Revision: 1.7 $ # Datum geaendert: $Date: 2006/04/10 14:46:54 $ # Autor: $Author: miwa $ # ------------------------------------------------------------ # # Dieses Skript erstellt einen identischen Dateibaum # unter einem neuen Zielknoten und linkt die Dateien des # orig. Baums dorthin. # # Aufruf: mInitTree [-d] [-nl] # # Parameter: # $1: : Basis des Originalbaums (z.B. /home/user1/src) # $2: : Basis des neuen Baums (z.B. /home/user2/bin) # $1 und $2 mussen absolute Pfade sein !! # Optionen: # -d: delete: Zielbaum ist leer (nyi) # -nl: "no link", der Link-Schritt wird ausgelassen. # Ergebis: # Verzeichnisse unter (z.B. /home/user1/src/bla) # werden unter angelegt (-> /home/user2/bin/bla) # Output: # &1: Trace # &2: Fehler-/Kontrollmeldungen # # Environment: # FIND_OPT: Zusatzliche Optionen fur das find-Kommando. # z.B: "! -name tmp ! -name CVS" #---------------------------------------------------------- function mk_dir { #---------------------------------------------------------- # geht zu und erzeugt (optional) das Verzeichnis # # # Parameter: # $1: # $2: #---------------------------------------------------------- echo ">mk_dir $1 $2" cd $1 mkdir -p $2 } #---------------------------------------------------------- function link_files { #---------------------------------------------------------- # linkt alle Dateien in nach # # Parameter: # $1: # $2: #---------------------------------------------------------- echo ">link_files $1 $2" cd $2 ln -sf $1/*.* . } #---------------------------------------------------------- # main #---------------------------------------------------------- echo ">mInitTree $*" >&2 #------------------ # Parameterprufung #------------------ if [[ $# -lt 2 ]]; then echo "mInitTree [-d] " >&2 exit 1 fi linkKnz=1 if [[ $# -eq 2 ]]; then origBase=$1 newBase=$2 linkKnz=1 else if [[ $# -gt 2 ]]; then origBase=$2 newBase=$3 if [[ "$1" == "-nl" ]]; then linkKnz=0 fi fi fi if [[ "${origBase:0:1}" != "/" || "${newBase:0:1}" != "/" ]]; then echo "Absolute Pfade verwenden !" exit 1 fi if [[ $# -gt 3 ]]; then echo "Leider sind noch keine weiteren Optionen fur mInitTree implementiert" >&2 exit 1 fi # Zielverzeichnis uberprufen mkdir -p $newBase cd $origBase for verz in `find . $FIND_OPT -type d`; do verz1=${verz#./} mk_dir $newBase $verz1 if [[ $linkKnz -eq 1 ]]; then link_files $origBase/$verz1 $newBase/$verz1 fi done