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