Mam
-katalog_glowny
--katalog1
---pliki
--katalog2
---pliki
itd
Do każdego z katalogow[x] przychodzą pliki.
Chciałbym zachowywać 10 najnowszych a całą resztę przerzucać do katalog_archiwum.
Najlepiej jeszcze żeby jak się jakieś nowe katalogi pojawiają to były z automatu brane pod uwagę.
Ale pomysły mi się skończyły jak taki skrypt napisać (piątek?).
[+] Bash - przerzucenie plików do innego katalogu
Tu jest parę skryptów: http://unix.stackexchange.com/questions ... dest-files . Jeśli pliki pojawiają się "same" co pewien czas to do uruchamiania skryptu możesz wykorzystać crona.
Kod: Zaznacz cały
ls -t | head -10
Problem co prawda dosyć prosty ale domyślam się, że to jednak magia piątku. Trzymaj (nie testowałem bo nie mam za bardzo gdzie):
Kod: Zaznacz cały
#!/bin/bash
path='/ścieżka_do_katalog_glowny'
for i in `ls $path`; do
cd `echo $path`/$i;
latest10=`ls -t |head -10`;
all=`ls`;
for j in ${all
[*]}; do
licznik=0;
for k in ${latest10
[*]}; do
if [ $j == $k ]; then
((licznik++));
fi
done
if [ $licznik == 0]; then
mv $j `echo $path``echo $i`/archiwum;
fi
done
done
Dziękuję.
To co było najstrasznieszniejsze to:
Ech moja głupota trzeba było pierwsze test puścić ... i zanim się zorientowałem pliki pożegnałem. Photorec teraz pracuje nad ich odzyskaniem.
Mała różnica a jaka przerażająca.
Lekko zmodyfikowany.
To co było najstrasznieszniejsze to:
Kod: Zaznacz cały
for i in `ls $path`; do
Kod: Zaznacz cały
mv /katalog/plik /katalog2
Kod: Zaznacz cały
mv /katalog/plik /katalog2/plik
Lekko zmodyfikowany.
Kod: Zaznacz cały
path='/sciezka1'
arch='/sciezka2/archiwum/'
for i in `ls $path`; do
cd `echo $path`/$i;
latest10=`ls -t |head -10`;
all=`ls`;
for j in ${all
[*]}; do
licznik=0;
for k in ${latest10
[*]}; do
if [ $j == $k ]; then
((licznik++));
fi
done
if [ $licznik == 0 ]; then
if [ ! -d "$arch$i" ]; then
mkdir $arch$i
fi
mv $path'/'$i'/'$j $arch$i'/'$j
fi
done
done