Voglio eliminare le cartelle e i suoi file sono stati creati per più di 7 giorni utilizzando la riga di comando.
Voglio eliminare le cartelle e i suoi file sono stati creati per più di 7 giorni utilizzando la riga di comando.
Risposte:
Se stai usando * nix e hai trovato disponibile questo dovrebbe fare il trucco:
find /the/directory/containing/files/to/delete -mtime +7 -exec rm -r {} \;
Il flag -mtimeè quello di controllare il timestamp di modifica dei file trovati. Se è sopra 7*24h,
verrà eseguitorm /path/to/file
Dalla manpage di find
-mtime n
File's data was last modified n*24 hours ago. See the comments
for -atime to understand how rounding affects the interpretation
of file modification times.
Non lavoro mai su Windows, anche se sono curioso di vedere quale comando sia equivalente al precedente in un ambiente MS-DOS. Ho trovato il file batch per eliminare i file più vecchi di N giorni qui su StackOverflow.
Il comando pertinente (copia + incollato dal thread precedentemente collegato):
forfiles -p "C:\what\ever" -s -m *.* -d <number of days> -c "cmd /c del @path"
La sintassi è leggermente cambiata, pertanto il comando aggiornato è
forfiles -p "C:\what\ever" -s -m *.* /D -<number of days> /C "cmd /c del @path"
Se hai bisogno di affrontare il problema del limite di spazio su un albero di file molto grande (nel mio caso molti rami perforce), che a volte viene impiccato durante l'esecuzione del processo di ricerca ed eliminazione -
Ecco uno script che pianifico quotidianamente per trovare tutte le directory con un file specifico ("ChangesLog.txt"), quindi ordina tutte le directory trovate più vecchie di 2 giorni e rimuovi la prima directory corrispondente (ogni programma potrebbe avere una nuova corrispondenza ):
bash -c "echo @echo Creating Cleanup_Branch.cmd on %COMPUTERNAME% - %~dp0 > Cleanup_Branch.cmd"
bash -c "echo -n 'bash -c \"find ' >> Cleanup_Branch.cmd"
rm -f dirToDelete.txt
rem cd. > dirToDelete.txt
bash -c "find .. -maxdepth 9 -regex ".+ChangesLog.txt" -exec echo {} >> dirToDelete.txt \; & pid=$!; sleep 100; kill $pid "
sed -e 's/\(.*\)\/.*/\1/' -e 's/^./"&/;s/.$/&" /' dirToDelete.txt | tr '\n' ' ' >> Cleanup_Branch.cmd
bash -c "echo -n '-maxdepth 0 -type d -mtime +2 | xargs -r ls -trd | head -n1 | xargs -t rm -Rf' >> Cleanup_Branch.cmd"
bash -c 'echo -n \" >> Cleanup_Branch.cmd'
call Cleanup_Branch.cmd
Nota i requisiti: