Skript mis otsib kõik pildi,video,muusika,dokumendi failid ja jagab need kaustadesse - BASH: Difference between revisions

From ICO wiki
Jump to navigationJump to search
(Created page with '<source lang="BATCH"> </SOURCE>')
 
No edit summary
 
(11 intermediate revisions by the same user not shown)
Line 1: Line 1:
<source lang="BATCH">
Skript otsib etteantud failitüüpi failid ja sorteerib need tüübi järgi kaustadesse.
Otsib ja liigutab faile /home kaustas,sorteeritakse /home kausta kataloogidesse.
Uue failitüübi lisamisel tuleb täiendada array ja array2 nimekirja. 
 
<source lang="bash">
                                                                                                     
 
#!/bin/bash
 
# failitüüpide array
array=(mp3 wav doc pdf jpg avi)
# kaustade array
array2=( /home/Muusika /home/Muusika /home/Dokumendid /home/Dokumendid  /home/Pilt /home/Video)
# loen kokku mitu liiget on arrays ja lahutan summast 1,et saaks seda kasutada all olevas for tsüklis
let "f=${#array[@]} - 1"
for x in `seq 0 $f`;
do
  # kõik failitüübid mis /home kaustas on panen kirja Log.txt faili
  find /home -name  "*."${array[x]} > /home/Log.txt
 
  # kui kaust on olemas tee nimekiri failidest,mis on kaustas
  if [ -d "${array2[x]}" ];then
    find "${array2[x]}" -name "*.""${array[x]}" | awk -F/ '{ print $NF }' > /home/Kaust.txt
  fi
 
  # kui Kaust.txtl on sisu,siis eemaldan need nimed Log.txt failist
  if [ -s /home/Kaust.txt ];then
    while read  line2
    do
      sed -i "/$line2/ d" /home/Log.txt
    done < /home/Kaust.txt
    rm  /home/Kaust.txt
  fi
 
  # kui kausta ei ole loodud siis loon selle
  if [ ! -d "${array2[x]}"  ];then
    mkdir "${array2[x]}"
  fi
 
  # sorteerin välja unikaalsed failinimed
  awk -F/ '{ print $NF }' Log.txt|sort| uniq > /home/FNimi.txt
 
  # Log.txt failist võtan unikaalse failinime(FNimi.txt failist)kohta ühe täisnime
  while read line1
  do
    grep -m 1 "$line1" Log.txt | sort | uniq -u >> /home/Log.txt.new
  done < /home/FNimi.txt
  rm /home/FNimi.txt
 
  # liigutan failid mis on kirjas Log.txt.new failis etteantud kataloogi
  if [ -f Log.txt.new ];then
    while read line
    do
      echo "Paigutan faili:" "$line" "Uude asukohta:" "${array2[x]}"
      mv -i "$line" "${array2[x]}" -n
    done < /home/Log.txt.new
    rm /home/Log.txt.new
  fi
done
rm /home/Log.txt
 
                                     
 
 
</SOURCE>
</SOURCE>

Latest revision as of 16:25, 30 January 2011

Skript otsib etteantud failitüüpi failid ja sorteerib need tüübi järgi kaustadesse. Otsib ja liigutab faile /home kaustas,sorteeritakse /home kausta kataloogidesse. Uue failitüübi lisamisel tuleb täiendada array ja array2 nimekirja.

                                                                                                      

#!/bin/bash

# failitüüpide array
array=(mp3 wav doc pdf jpg avi)
# kaustade array
array2=( /home/Muusika /home/Muusika /home/Dokumendid /home/Dokumendid  /home/Pilt /home/Video)
# loen kokku mitu liiget on arrays ja lahutan summast 1,et saaks seda kasutada all olevas for tsüklis 
let "f=${#array[@]} - 1"
for x in `seq 0 $f`;
do
  # kõik failitüübid mis /home kaustas on panen kirja Log.txt faili
  find /home -name  "*."${array[x]} > /home/Log.txt

  # kui kaust on olemas tee nimekiri failidest,mis on kaustas
  if [ -d "${array2[x]}" ];then
     find "${array2[x]}" -name "*.""${array[x]}" | awk -F/ '{ print $NF }' > /home/Kaust.txt
  fi

  # kui Kaust.txtl on sisu,siis eemaldan need nimed Log.txt failist
  if [ -s /home/Kaust.txt ];then
     while read  line2
     do
       sed -i "/$line2/ d" /home/Log.txt
     done < /home/Kaust.txt
     rm  /home/Kaust.txt
  fi

  # kui kausta ei ole loodud siis loon selle
  if [ ! -d "${array2[x]}"  ];then
     mkdir "${array2[x]}"
  fi

  # sorteerin välja unikaalsed failinimed
  awk -F/ '{ print $NF }' Log.txt|sort| uniq > /home/FNimi.txt

  # Log.txt failist võtan unikaalse failinime(FNimi.txt failist)kohta ühe täisnime
  while read line1
  do
    grep -m 1 "$line1" Log.txt | sort | uniq -u >> /home/Log.txt.new
  done < /home/FNimi.txt
  rm /home/FNimi.txt

  # liigutan failid mis on kirjas Log.txt.new failis etteantud kataloogi
  if [ -f Log.txt.new ];then
    while read line
    do
      echo "Paigutan faili:" "$line" "Uude asukohta:" "${array2[x]}"
      mv -i "$line" "${array2[x]}" -n
    done < /home/Log.txt.new
    rm /home/Log.txt.new
  fi
done
rm /home/Log.txt