Nowe posty

xx Problem ze sterownikami. (5)
2024-04-13, 21:25:16
xx Instalacja xfce4 (2)
2024-04-13, 16:20:17
xx Serie kompilacji bez instalacji dla “emerge” w Gentoo (2)
2024-04-08, 18:40:04
xx Plasma 6 w Neonie ssie trochę mniej ... (17)
2024-04-05, 10:03:46
xx Problem z Linux Lite po instalacji (3)
2024-04-03, 14:23:40
xx Jak właczyć num locka przy starcie systemu debian 12? (12)
2024-04-02, 17:43:54
xx Brak dźwieku w systemie. (5)
2024-04-02, 16:13:41
xx Dystrybucja pod HP Omen (7)
2024-03-29, 11:33:05
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
xx Ile pingwinów? (1)
2024-03-27, 08:59:24

Autor Wątek: przenoszenie plikow z poprzedniego dnia  (Przeczytany 4983 razy)

michalwu

  • Gość
przenoszenie plikow z poprzedniego dnia
« dnia: 2009-11-17, 15:26:56 »
Cześć

Próbuję stworzyć prosty skrypcik, który byłby uruchamiany codziennie cronem i mialby:
1. Sprawdzać czy w katalogu istnieją pliki
2. Jeśli istnieją, sprawdzać czy są pliki z wczoraj
3. Pliki z wczoraj przenosić do innego katalogu.


Czy któś mógłby wskazać mi co robię źle?
Staję na tym że wyświetla mi daty dla każdego pliku w katalogu z komunikatem "command not found" -mam wrażenie że bash traktuje daty jako polecenia które należy wykonać.

#!/bin/bash
######data w formacie rrrr-mm-dd do katalogowania logow
WCZORAJ=$(date --date='1 day ago' +"%Y-%m-%d")

######sprawdzamy czy w katalogu sa pliki
pliki=$(ls /var/log/katalog/*.* 2> /dev/null | wc -l)
if [ "$pliki" != "0" ]
        then
        LOGI="/var/log/katalog/*.*"
        echo "cos mamyyyyy ;)"

#####plik z wczorajsza data przenies do katalogu z wczorajsza data w nazwie
                for f in "$LOGI"
                do
                DATA=$(stat -c %y $f | cut -d ' ' -f1)
                        if "$DATA" = "$WCZORAJ"; then
                        mkdir /var/log/katalog/$WCZORAJ
                        mv $f /var/log/katalog/$WCZORAJ
                        else
                        echo "nic nie robie"
                fi
                done
        else
        echo "braaak plikow, koncze prace"
fi
Pozdrawiam
michal

arctgx

  • Gość
przenoszenie plikow z poprzedniego dnia
« Odpowiedź #1 dnia: 2009-11-17, 16:39:28 »
Zamiast wnikać w Twój skomplikowany kod (choć może i ciekawie pobawić się nim), podsunę proste rozwiązanie:
find katalog -newermt 'yesterday 00:00' ! -newermt 'yesterday 23:59' -exec mv {} /gdzieś/tam \\;
Słowo 'yesterday' działa w pl_PL.UTF-8 (chyba znaczenie ma zmienna LC_TIME). Żeby było ciekawiej, próbowałem zastąpić go słowem 'wczoraj', ale nie udało się. Warto by zajrzeć do źródeł (glibc?), by zobaczyć, jakie polskie czasy działają.

Lektura: man -LC find.
Jeden ciekawy wątek z przykładami: http://forum.linux.pl/viewtopic.php?id=10978