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
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