Newsgroup: it.comp.os.linux.iniziare
Titolo: Script per cancellare vecchio contenuto directory

Salve,
 
devo creare uno script da mettere ogni notte in crontab che cancelli il 
contenuto più vecchio di una settimana in ogni singola directory:
 
#!/bin/bash
#Delete old ipcam media script
 
find /home/ipcam/cam04/ -mtime +7 -delete
find /home/ipcam/cam05/ -mtime +7 -delete
find /home/ipcam/cam06/ -mtime +7 -delete
find /home/ipcam/cam07/ -mtime +7 -delete
find /home/ipcam/cam08/ -mtime +7 -delete
find /home/ipcam/cam09/ -mtime +7 -delete
 
In passato usavo un "semplice":
 
find /home/ipcam/* -mtime +7 -delete
 
che ho dovuto abbandonare perchè in quel modo si eliminavano anche le 
directory e le ipcam più vecchie non riuscivano a ricrearle e alla fine 
non "registravano" più... c'è un modo più elegante per gestire lo script 
di cui sopra?! :D
 
Saluti.
GabrieleMax


Prova cosi':
 
for i in /home/ipcam/*; do find $i -mtime +7 -delete; done
 
angelo


Dovrebbe bastare selezionare i soli files.
 
$ find /home/ipcam/* -type f -mtime +7 -delete
 
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   < 
http://giovanni.homelinux.net/
 >

 Giovanni
 
Saluti.
GabrieleMax

 angelo
 
Saluti.
GabrieleMax


Effettivamente il mio comando elimina anche le directory pero' se 
aggiungi l'opzione -type f come suggerisce Giovanni conserva le directory.
Provando cosi' a me elimina i file e mantiene le directory anche se vuote.
 
for i in /home/ipcam/*; do find $i -type f -mtime +7 -delete; done
 
angelo

 a livello di /home/ipcam/
 
Cosi` va bene?
 
 
#!/bin/bash
for subdir in $(find /home/ipcam -type d -name "cam*")
do
    find $subdir/* -mtime +7 -exec rm -i {} \;
done
exit 0
 


 
Perché complicate lo script?  Il comando
$ find /home/ipcam/* -type f -mtime +7 -delete
non elimina le directories.


 Giovanni
 
Saluti!
GabrieleMax

 exit 0
 
Ti ringrazio intanto per la risposta, avendo creato le directory ieri 
vedrò il risultato dello script tra una settimana, ora non posso mettere 
+1 perchè mi serve tenere la settimana!
 
Ti terrò informato! :)
 
Saluti!
GabrieleMax
 

 angelo
 
Saluti!
GabrieleMax

Addi' 29 nov 2017 18:06:34, GabrieleMax scrive:

Due cose, e mi saprai dire se ti servono.
 
1) Dai il comando seguente:
$: cp -a --attributes-only /home/ipcam /tmp/
 
e adesso hai in /tmp tutto il ramo ipcam completo di file e con date
identiche alle originali, anche se i file son tutti vuoti (cosi' non
consumi disco). Li' puoi fare tutti gli esperimenti che vuoi.
 
2) Dopo aver dato il comando suggerito da Gionanni per find:
$: find /home/ipcam/* -type f -mtime +7 -delete
 
per distruggere le directory non_standard che dici, fai la seguente
cosa.
SE il pc non resta MAI spento da saltare un giorno, ALLORA e' chiaro
che c'e' SEMPRE una e UNA SOLA directory da rimuovere ogni giorno.
Percio' puoi fare:
$: rmdir /home/ipcam/$(date +%Y%d%m --date="1 week ago")
 
e con cio' oggi 29 novembre elimini la 20172211, altre con date
anteriori non ce ne possono essere ciao
 
-- 
Yoda
 

 anteriori non ce ne possono essere ciao
 
Avrò modo di fare una prova! :)
 
Saluti!
GabrieleMax
 

 Avrò modo di fare una prova! :)
 
Prova mettendo /tmp/ipcam al posto di /home/ipcam, ovviamente dopo aver
copiato come t'ho detto tutto il ramo ipcam in /tmp ciao
 
Postilla. Se in /tmp/ipcam vuoi alterare (per fare il test senza
aspettare) la data a file o directory, dai:
$: touch -d 11/22/17 pippo_che_vuoi_cambiare
 
(sono mese/giorno/anno tutti a due cifre)
 
-- 
Yoda
 

 (sono mese/giorno/anno tutti a due cifre)
 
In ogni caso mi hai dato info che potrebbero comunque tornarmi utili!
 
Saluti.
GabrieleMax
 

 
 
ma perche' ANNO-GIORNO-MESE?
Usare lo standard ISO 8601 pare brutto?
 
Ciao Jack

 Usare lo standard ISO 8601 pare brutto?
 
Perche' sono le ipcam di Gabriele che creano le directory con quel nome,
non e' mica una scelta mia o di Gabriele stesso.
 
Sara' il formato di Taiwan ;^)  perche' ad esempio "touch -d" prende in
input il mese prima del giorno: 11/22/17, che dev'essere quello usa.
 
Tanto per dire: io avrei scelto l'ISO (cioe' 2017-11-22), perche' cosi'
ls non mi mischia i mesi, anche con separatore nullo metterebbe infatti
tutti i file in ordine di calendario ciao
 
-- 
Yoda
 

 non e' mica una scelta mia o di Gabriele stesso.
 
Esatto:
 
root@Server01:/home/ipcam/cam09# ls
20171128  20171129  20171130  20171201  20171202
root@Server01:/home/ipcam/cam09#
 
Che poi in realtà sono anno mese giorno...
 
Saluti!
GabrieleMax

Addi' 02 dic 2017 09:32:33, GabrieleMax scrive:

Ah.. allora viene ISO 8601 con separatore nullo, come diceva Jack, avevi
riportato male la prima volta: 20173911 ciao
 
(se fai le prove che t'avevo detto, allora devi invertire d <-> m nel
formato per date)
 
-- 
bye, Yoda
 


ecco, mi chiedevo perche' uno volesse farsi cosi del male a mettere la data come anno giorno mese (che cmq e' meglio di mese giorno anno degli americani): era un typo :D
 
Ciao Jack