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
No edit summary
No edit summary
Line 6: Line 6:
# failitüüpide array
# failitüüpide array
array=( .mp3 .wav .doc .pdf )
array=( .mp3 .wav .doc .pdf )
# kaustade array
# kaustade array
array2=( /home/Muusika /home/Muusika /home/Dokumendid /home/Dokumendid )
array2=( /home/Muusika /home/Muusika /home/Dokumendid /home/Dokumendid )
# loen ükshaaval failitüübid array´st sisse
# loen ükshaaval failitüübid array´st sisse
for x in `seq 0 1`;
for x in `seq 0 1`;
do
do
   echo "${array[x]}"
   echo "${array[x]}"
   # kõik failitüübid mis /home kaustas on panen kirja Log.txt faili
   # kõik failitüübid mis /home kaustas on panen kirja Log.txt faili
   find /home -name *"${array[x]}"  > /home/Log.txt
   find /home -name *"${array[x]}"  > /home/Log.txt
   # kui kaust on olemas tee nimekiri failidest,mis on kaustas
   # kui kaust on olemas tee nimekiri failidest,mis on kaustas
   if [ -d "${array2[x]}" ];then
   if [ -d "${array2[x]}" ];then
     find "${array2[x]}" -name *"${array[x]}" | awk -F/ '{ print $NF }' > /home/Kaust.txt
     find "${array2[x]}" -name *"${array[x]}" | awk -F/ '{ print $NF }' > /home/Kaust.txt
   fi
   fi
   # kui Kaust.txtl on sisu,siis eemaldan need nimed Log.txt failist
   # kui Kaust.txtl on sisu,siis eemaldan need nimed Log.txt failist
   if [ -s /home/Kaust.txt ];then
   if [ -s /home/Kaust.txt ];then
Line 24: Line 29:
       sed -i "/$line2/ d" /home/Log.txt
       sed -i "/$line2/ d" /home/Log.txt
     done < /home/Kaust.txt
     done < /home/Kaust.txt
  #  rm  /home/Kaust.txt
    rm  /home/Kaust.txt
   fi
   fi
   # kui kausta ei ole loodud siis loon selle
   # kui kausta ei ole loodud siis loon selle
   if [ ! -d "${array2[x]}"  ];then
   if [ ! -d "${array2[x]}"  ];then
     mkdir "${array2[x]}"
     mkdir "${array2[x]}"
   fi
   fi
   # sorteerin välja unikaalsed failinimed
   # sorteerin välja unikaalsed failinimed
   awk -F/ '{ print $NF }' Log.txt|sort| uniq > /home/FNimi.txt
   awk -F/ '{ print $NF }' Log.txt|sort| uniq > /home/FNimi.txt
   # unikaalsed failinimed sorteerin välja Logtxt failist kus on kõikide selle failitüüpide täis nimed(path)
   # unikaalsed failinimed sorteerin välja Logtxt failist kus on kõikide selle failitüüpide täis nimed(path)
   while read line1
   while read line1
Line 37: Line 45:
   grep -m 1 "$line1" Log.txt | sort | uniq -u >> /home/Log.txt.new
   grep -m 1 "$line1" Log.txt | sort | uniq -u >> /home/Log.txt.new
   done < /home/FNimi.txt
   done < /home/FNimi.txt
# rm /home/FNimi.txt
  rm /home/FNimi.txt
 
   # liigutan failid mis mis on kirjas Log.txt.new failis
   # liigutan failid mis mis on kirjas Log.txt.new failis
   if [ -f Log.txt.new ];then
   if [ -f Log.txt.new ];then
Line 45: Line 54:
       mv -i "$line" "${array2[x]}" -n
       mv -i "$line" "${array2[x]}" -n
     done < /home/Log.txt.new
     done < /home/Log.txt.new
  #  rm /home/Log.txt.new
    rm /home/Log.txt.new
   fi
   fi
done
done
#rm /home/Log.txt
rm /home/Log.txt
                                        
                                        




</SOURCE>
</SOURCE>

Revision as of 12:40, 28 January 2011

                                                                                                      

#!/bin/bash

# failitüüpide array
array=( .mp3 .wav .doc .pdf )

# kaustade array
array2=( /home/Muusika /home/Muusika /home/Dokumendid /home/Dokumendid )

# loen ükshaaval failitüübid array´st sisse
for x in `seq 0 1`;
do
  echo "${array[x]}"

  # 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

  # unikaalsed failinimed sorteerin välja Logtxt failist kus on kõikide selle failitüüpide täis nimed(path)
  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 mis on kirjas Log.txt.new failis
  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