desdemona

bash dziala -e; stary bogdan

Nov 24th, 2012
310
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 4.95 KB | None | 0 0
  1. #!/bin/bash
  2. HELP_OPT=0
  3. SMALL_OPT=0
  4. RECUR=0
  5. E_OPT=0
  6. V_OPT=0
  7. WZORZEC=0;
  8. WG_WZ=0;
  9. #9.Napisać skrypt, który w podanym katalogu zamieni nazwy plików
  10. # pisane wielkimi literami na pisane małymi. Ponadto będzie mógł
  11. #zmieniać podane wzorce nazw i rekurencyjnie w podkatalogach. Będzie
  12. #też można podać parametr określający czy zmieniane mają być wielkie
  13. #litery na małe czy odwrotnie.
  14. #Uwaga: nie można korzystać z plecenia find.
  15.  
  16. help()
  17. {
  18.     echo "skrypt Bogdan - pomoc"
  19.     echo "-h wyświetla pomoc i kończy pracę"
  20.     echo "-v wyswietla wersję i kończy pracę"
  21.     echo "-d zamiana z dużych liter na małe"
  22.     echo "-e bez zmiany rozszezenia w pliku"
  23.     echo "-r oraz -R zamiana nazw plikow rekursywnie w podkatalogach"
  24.     echo "-w zmiana tylko nazw plikow ktore spelniaja podany wzorzec"
  25.     echo "przyjmuje wzorzec jako parametr"
  26.     echo "-x zmiana w okreslonym folderze. przyjmuje sciezke jako argument"
  27. }
  28.  
  29. wersja()
  30. {
  31.     echo "wersja skryptu Bogdan"
  32.     echo "jedyna jaka istnieje - 1.0"
  33. }
  34.  
  35. dnam()
  36. {
  37.     for stara_nazwa in *; do
  38.         if [ -f "$stara_nazwa" ]; then
  39.             nowa_nazwa="$(echo $stara_nazwa | tr '[:upper:]' '[:lower:]')"
  40.             mv "$stara_nazwa" "$nowa_nazwa"
  41.         fi
  42.     done   
  43. }
  44.  
  45. mnad()
  46. {
  47.     for stara_nazwa in *; do
  48.         if [ -f "$stara_nazwa" ]; then
  49.             nowa_nazwa="$(echo $stara_nazwa | tr '[:lower:]' '[:upper:]')"
  50.             mv "$stara_nazwa" "$nowa_nazwa"
  51.         fi
  52.     done
  53. }
  54.  
  55. dname()
  56. {
  57.     for stara_nazwa in *; do
  58.         if [ -f "$stara_nazwa" ]; then
  59.             temp=`echo $stara_nazwa | grep -E "(\.)[0-9a-zA-Z]"`
  60.             if [ -z $temp ]; then
  61.                 nowa_nazwa="$(echo $stara_nazwa | tr '[:upper:]' '[:lower:]')"
  62.             else
  63.                 rozszezenie="${stara_nazwa##*.}"
  64.                 nazwa="${stara_nazwa%.*}"
  65.                 nazwa="$(echo $nazwa | tr '[:upper:]' '[:lower:]')"
  66.                 nowa_nazwa=${nazwa}.${rozszezenie}
  67.                 echo $nowa_nazwa
  68.             fi
  69.             mv "$stara_nazwa" "$nowa_nazwa"
  70.            
  71.         fi
  72.     done   
  73. }
  74.  
  75. mnade()
  76. {  
  77.     for stara_nazwa in *; do
  78.         if [ -f "$stara_nazwa" ]; then
  79.             temp=`echo $stara_nazwa | grep -E "(\.)[0-9a-zA-Z]"`
  80.             if [ -z $temp ]; then
  81.                 nowa_nazwa="$(echo $stara_nazwa | tr '[:lower:]' '[:upper:]')" 
  82.             else
  83.                 rozszezenie="${stara_nazwa##*.}"
  84.                 nazwa="${stara_nazwa%.*}"
  85.                 nazwa="$(echo $nazwa | tr '[:lower:]' '[:upper:]')"
  86.                 nowa_nazwa=${nazwa}.${rozszezenie}
  87.                 echo $nowa_nazwa
  88.             fi
  89.             mv "$stara_nazwa" "$nowa_nazwa"
  90.            
  91.         fi
  92.     done   
  93. }
  94. mnadr()
  95. {
  96.     cd "$1"
  97.     mnad
  98.     for cos in *; do
  99.     if [ -d "$cos" ]; then     
  100.         mnadr "$cos"   
  101.     fi
  102.     done
  103.     cd ../
  104. }
  105.  
  106. dnamr()
  107. {
  108.     cd "$1"
  109.     dnam
  110.     for cos in *; do
  111.     if [ -d "$cos" ]; then     
  112.         dnamr "$cos"   
  113.     fi
  114.     done
  115.     cd ../
  116. }
  117.  
  118. mnader()
  119. {
  120.     cd "$1"
  121.     mnade
  122.     for cos in *; do
  123.     if [ -d "$cos" ]; then     
  124.         mnadr "$cos"   
  125.     fi
  126.     done
  127.     cd ../
  128. }
  129.  
  130. dnamer()
  131. {
  132.     cd "$1"
  133.     dname
  134.     for cos in *; do
  135.     if [ -d "$cos" ]; then     
  136.         dnamr "$cos"   
  137.     fi
  138.     done
  139.     cd ../
  140. }
  141.  
  142. echo "skrypt Bogdan"
  143. echo "zmienia nazwy plikow z pisanych malymi literami"
  144. echo "na nazwy pisane duzymi literami"
  145. FOLDER=$(pwd)
  146. OBECNY=$(pwd)
  147.  
  148. while getopts "hvdrRewx:" OPTION
  149. do
  150.     case $OPTION in
  151.         h) #help
  152.         HELP_OPT=1;;
  153.        
  154.         v) #wersja
  155.         V_OPT=1;;
  156.  
  157.         d) #male litery
  158.         SMALL_OPT=1;;
  159.  
  160.         r) #rekursywnie
  161.         RECUR=1;;
  162.  
  163.         R) #rekursywnie
  164.         RECUR=1;;
  165.  
  166.         e) echo "bez zmiany rozszezenia w pliku"
  167.         E_OPT=1;;
  168.        
  169.         w) echo "wg wzorca"
  170.         WG_WZ=1;
  171.         echo $OPTARG
  172.         WZORZEC=$OPTARG;;
  173.  
  174.         x)
  175.         FOLDER=$OPTARG;;
  176.        
  177.         ?)
  178.         echo "nie ma takiej opcji, oto pomoc"
  179.         HELP_OPT=1;;
  180.    
  181.     esac
  182. done
  183.  
  184. if [ $HELP_OPT -eq 1 ]
  185. then
  186.     help
  187.     exit 0
  188. fi
  189.  
  190. if [ $V_OPT -eq 1 ]
  191. then
  192.     wersja
  193.     exit 0
  194. fi
  195.  
  196.  
  197. #prosta zamina z duzych liter na male bez rekurencji
  198. if [ $WG_WZ -eq 0 -a $E_OPT -eq 0 -a $SMALL_OPT -eq 1 -a $RECUR -eq 0 ]
  199. then
  200.     cd "$FOLDER"
  201.     dnam
  202.     cd "$OBECNY"
  203.     exit 0
  204. fi
  205.  
  206. #prosta zamiana z malych na duze bez rekurencji
  207. if [ $WG_WZ -eq 0 -a $E_OPT -eq 0 -a $SMALL_OPT -eq 0 -a $RECUR -eq 0 ]
  208. then
  209.     cd "$FOLDER"
  210.     mnad
  211.     cd "$OBECNY"
  212.     exit 0
  213. fi
  214.  
  215. #zamina z duzych liter na male z rekurencja
  216. if [ $WG_WZ -eq 0 -a $E_OPT -eq 0 -a $SMALL_OPT -eq 1 -a $RECUR -eq 1 ]
  217. then
  218.     dnamr $FOLDER
  219.     cd "$OBECNY"
  220.     exit 0
  221. fi
  222.  
  223. #zamina z malych liter na duze z rekurencja
  224. if [ $WG_WZ -eq 0 -a $E_OPT -eq 0 -a $SMALL_OPT -eq 0 -a $RECUR -eq 1 ]
  225. then
  226.     mnadr $FOLDER
  227.     cd "$OBECNY"
  228.     exit 0
  229. fi
  230.  
  231. #zamina z duzych liter na male bez rekurencji i zmiany rozszenia
  232. if [ $WG_WZ -eq 0 -a $E_OPT -eq 1 -a $SMALL_OPT -eq 1 -a $RECUR -eq 0 ]
  233. then
  234.     cd "$FOLDER"
  235.     dname
  236.     cd "$OBECNY"
  237.     exit 0
  238. fi
  239.  
  240. #zamiana z malych na duze bez rekurencji i zmiany rozszezenia
  241. if [ $WG_WZ -eq 0 -a $E_OPT -eq 1 -a $SMALL_OPT -eq 0 -a $RECUR -eq 0 ]
  242. then
  243.     cd "$FOLDER"
  244.     mnade
  245.     cd "$OBECNY"
  246.     exit 0
  247. fi
  248.  
  249. #zamina z duzych liter na male z rekurencja i bez zmiany rozszenia
  250. if [ $WG_WZ -eq 0 -a $E_OPT -eq 1 -a $SMALL_OPT -eq 1 -a $RECUR -eq 1 ]
  251. then
  252.     dnamer $FOLDER
  253.     cd "$OBECNY"
  254.     exit 0
  255. fi
  256.  
  257. #zamiana z malych na duze z rekurencja i bez zmiany rozszezenia
  258. if [ $WG_WZ -eq 0 -a $E_OPT -eq 1 -a $SMALL_OPT -eq 0 -a $RECUR -eq 1 ]
  259. then
  260.     mnader $FOLDER
  261.     cd "$OBECNY"
  262.     exit 0
  263. fi
Advertisement
Add Comment
Please, Sign In to add comment