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

From ICO wiki
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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