Come posso eliminare cartelle e file più vecchi di 7 giorni dalla riga di comando?


4

Voglio eliminare le cartelle e i suoi file sono stati creati per più di 7 giorni utilizzando la riga di comando.


Su quale sistema operativo (Win, OSx Linux? Sto assumendo Linux ma sai cosa dicono delle ipotesi.
Steve Robillard,


Non sono sicuro di come faresti la parte di 7 giorni, ma se usi OS X o Linux puoi usare il comando: rm -rf / path / to / the / folder
nosedive25

wa c mahmoud. vuoi creare uno script che elimini i file prima del settimo giorno? e in quale sistema operativo ?!

In Windows, e le cartelle che voglio essere cancellate nominate come: 200110001,20110002 .. e così via, solo la cartella inizia con "2011 ..." che voglio eliminare

Risposte:


12

* NIX

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.  

WINDOWS XP e VISTA

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"

WINDOWS 7

La sintassi è leggermente cambiata, pertanto il comando aggiornato è

forfiles -p "C:\what\ever" -s -m *.* /D -<number of days> /C "cmd /c del @path"

Rm richiede il flag -r per eliminare le directory, se ricordo bene. (UNIX)

@Jon Oh, non ho notato che era necessario eliminare sia le directory che i file, modificherò subito il mio post. Grazie per averlo segnalato!

E per essere sicuro, dovrebbe anche usare il flag -f, quindi -rf forzerà sempre una cancellazione. (dimenticato quello).

@Jon L'ho lasciato apposta per essere onesto, meglio prevenire che curare! ;)

refp, grazie mille per la risposta, "forfiles" funzionerà in Windows?

0

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:

  1. Eliminare solo quelle directory con "ChangesLog.txt", poiché non è necessario eliminare altre vecchie directory.
  2. Chiamare direttamente i comandi del sistema operativo in cygwin , poiché altrimenti utilizzava i comandi predefiniti di Windows.
  3. Raccolta delle directory da eliminare in un file di testo esterno, al fine di salvare i risultati di ricerca , poiché a volte il processo di ricerca si è bloccato.
  4. Impostazione di un timeout per il processo di ricerca utilizzando & processo in background che viene ucciso dopo 100 secondi .
  5. Prima l'ordinamento delle directory più vecchie, per la priorità di eliminazione.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.