Log in


Forgot your password?
prijatelji LUGoNSa
gnu.gif
linuxzasve.jpg
hulk.jpg
zextras_logo.png
 
You are here: Home / members / Gavrilo Prodanovic / Shell skripte / link-many.sh

link-many.sh

by Gavrilo Prodanovic last modified Mar 13, 2011 04:42 PM
Skripta koja listu fajlova premjesta u odredjeni folder, i linkuje ih na starim mjestima ka novoj lokaciji. Za vise opcija ukucajte ./link-many.sh -h

text/x-sh icon link-many.sh — text/x-sh, 2 kB (2820 bytes)

File contents

#!/bin//bash
pomoc()
{
	echo 'Shell skripta za kopiranje fajlova na jedno mjesto i linkovanjem na njihovom starom'
	echo 'Koristiti: link-many.sh [-h] [-p prefix] [-v] [-f] -l lista-fajlova.txt -t /link-dir/'
	echo; echo 'Skripta trazi dva obavezna parametra -l sa .txt fajlom gdje se nalaze svi fajlovi koje treba kopirati i sa -t ciljem gde ce da kopira fajlove'
	echo 'U listi moraju biti apsolutne putanje do fajlova ako nisu apsolutne putanje onda koristi -p opciju da se putanja dopuni'
	echo; echo 'Opcija -v daje vise ispisa'
	echo 'Opcija -f ne izvodi putanju direktorijuma nekog fajla. Koristiti samo ako je u lista-fajlova.txt navedena samo putanja direktorijuma prije toga fajla'
	echo; echo 'Skripta ce da kreira stablo direktorijuma u -t folderu, kakvo je bilo u putanji fajla za fajl /bin/bash u -t direktorijumu ce biti kreiran folder /bin/ pa tek onda u njega kopiran fajl'
	echo; echo 'Skripta nece da kopira linkove, simbolicki linkovi ce biti netaknuti ili bilo kakve specijalni fajlovi. Samo regularne fajlove kopira i linkuje'
	exit 1
}

## UZIMANJE ARGUMENATA
 # ZA ISPISIVANJE POMOCI
  if [ $# -eq 0 ]; then
   pomoc
  fi
  if [ $1 = -h ]; then
   pomoc
  fi
  # ISPITIVANJE OSTALIH ARGUMENATA
  # POSTAVLJANJE DEFAULT VRIJEDNOSTI
   preff= #znaci bez prefiksa
   patchs= #znaci bez putanja koje treba izbaciti
   verbose=0 #normalan ispis
   fast=0 #izvlaci direktorijum iz putanje fajla
   lista='!!NULL!!'
   lndir='!!NULL!!'
  #TRAZI ARGUMENTE KOJI SU ZADATI
  brojac=1
  brarg=$#
  while [ $brojac -le $brarg ]
  do
   if [ $1 = -h ]; then
    pomoc
   elif [ $1 = -p ]; then
    preff=$2
    shift; shift; brojac=`expr $brojac + 1`
   elif [ $1 = -v ]; then
    verbose=1
    shift
   elif [ $1 = -f ]; then
    fast=1
    shift
   elif [ $1 = -l ]; then
    lista=$2
    shift; shift; brojac=`expr $brojac + 1`
   elif [ $1 = -t ]; then
    lndir=$2
    shift; shift; brojac=`expr $brojac + 1`
   fi
   brojac=`expr $brojac + 1`
  done
## END

## GLAVNI DIO PROGRAMA KOJI RADI
  mkdir $lndir #kreira link direktorijum
  brstr=`cat $lista | wc -l`
  echo "Broj fajlova u listi = "$brstr #DEBUG
  for i in `seq 1 $brstr`
  do
   line=$preff`sed -n "$i p" $lista`
   if [ $verbose -eq 1 ]; then
    echo "i="$i" line="$line""; fi
   tip=`ls -ld $line | cut -c 1-1`
    if [ $tip = '-' ]; then
     if [ $fast -eq 0 ]; then
      duzline=`echo -n $line | wc -m  #RE-DEBUG START`
      for i1 in `seq $duzline -1 1`
      do
       dio=`echo -n $line | cut -c $i1-$i1`
       if [ $dio = '/' ]; then
        dirr=`echo -n $line | cut -c 1-$i1`
        mkdir -p dirr
        break
       fi
      done
     fi                          
     mv -f $line $lndir/$line
     ln -s $lndir/$line $line
    elif [ $tip = 'd' ]; then
     mkdir -p $lndir/$line
    fi
   
  done
## END
exit 0 # KRAJ :)

Document Actions