Ho un sacco di utenti indisciplinati con account di posta su un mio server. Non svuotano mai le loro cartelle spazzatura o spazzatura e il numero di file sale all'infinito.
Sto creando uno script Bash per cancellare periodicamente quei file usando cron.
Ho fatto questo:
- creare un file txt con un elenco di directory che voglio cancellare;
- creare uno script che legga riga per riga, ogni directory e cancella tutto da
curenew.
Esempio di file txt:
~/mail/.Junk/cur
~/mail/.Junk/new
~/mail/.Trash/cur
~/mail/. Trash/new
~/mail/.administrative@example.com/.Junk/cur
~/mail/.administrative@example.com/.Junk/new
~/mail/.administrative@example.com/.Trash/cur
~/mail/.administrative@example.com/.Trash/new
~/mail/.finance@example.com/.Junk/cur
~/mail/. finance@example.com/.Junk/new
~/mail/. finance@example.com/.Trash/cur
~/mail/. finance@example.com/.Trash/new
Sono nella prima fase della creazione dello script in cui collaudo se posso accedere alle directory ed elencarne i contenuti.
Quindi ho questo script:
#!/bin/bash
while read line
do
ls $line
done < ~/directories.txt
Quando eseguo lo script viene visualizzato il seguente errore:
ls: impossibile accedere a ~/mail/.administrative@example.com/.Junk/new/: nessun file o directory
per tutte le directory ma se scrivo
ls ~/mail/.administrative@example.com/.Junk/new/
funziona benissimo.
perché?
~percorso nella sceneggiatura per vedere se sei nel posto giusto e forse dovrai usare il percorso assoluto della tua casa invece del~
~punta a una directory home diversa (probabilmente/root). usa percorsi completi e assicurati che root abbia accesso alle cartelle e ai contenuti.