Question Comment supprimer des dossiers et des fichiers datant de plus de 7 jours sur la ligne de commande?


Je veux supprimer des dossiers et ses fichiers ont été créés plus de 7 jours en utilisant la ligne de commande.


4
2017-12-11 05:07


origine


Sur quel OS (Win, OSx Linux? Je suppose que Linux mais vous savez ce qu’ils disent à propos des hypothèses. - Steve Robillard
sevenforums.com/tutorials/...
Je ne sais pas comment vous feriez la partie de 7 jours, mais si vous utilisez OS X ou Linux, vous pouvez utiliser la commande: rm -rf / path / to / the / folder - nosedive25
wa c mahmoud. vous voulez créer un script qui supprime les fichiers avant le 7ème jour? et dans quel système d'exploitation?!
Dans Windows, et les dossiers que je veux supprimer sont nommés 200110001,20110002 .. et ainsi de suite, le dossier commence par "2011 ..." que je veux supprimer


Réponses:


*RIEN

Si vous utilisez * nix et avez trouver disponible, cela devrait faire l'affaire:

find /the/directory/containing/files/to/delete -mtime +7 -exec rm -r {} \;

Le drapeau -mtime est de vérifier l'horodatage de modification des fichiers trouvés. Si c'est ci-dessus 7*24h depuis,
il va exécuter rm /path/to/file

De la page de manuel pour 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 & VISTA

Je ne travaille jamais sur windows bien que je sois curieux de voir quelle commande doit être équivalente à celle ci-dessus dans un environnement MS-DOS. j'ai trouvé Fichier batch pour supprimer les fichiers de plus de N jours ici sur stackoverflow.

La commande correspondante (copie + collée à partir du thread précédemment lié):

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

WINDOWS 7

La syntaxe a un peu changé donc la commande mise à jour est

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

11
2017-12-11 05:17



Rm requiert l'indicateur -r pour supprimer les répertoires, si je me souviens bien. (UNIX)
@Jon Oh, je n'ai pas remarqué qu'il était nécessaire de supprimer les répertoires et les fichiers, je modifierai immédiatement mon message. Merci de l'avoir signalé!
Et juste pour être sûr, il devrait également utiliser le drapeau -f, donc -rf forcera toujours une suppression. (oublié celui-là).
@Jon je l'ai laissé exprès pour être honnête, mieux vaut prévenir que guérir! ;)
refp, merci beaucoup pour votre réponse, "forfiles" fonctionnera dans Windows?


Si vous avez besoin de traiter un problème de limite d’espace sur une très grande arborescence de fichiers (dans mon cas, de nombreuses branches de perforce), être pendu en courant le processus de recherche et de suppression -

Voici un script que je programme chaque jour pour trouver tous les répertoires avec un fichier spécifique ("ChangesLog.txt"), et alors Trier tous les répertoires trouvé qui sont plus âgé que 2 jours, et Supprimez le premier répertoire correspondant (chaque calendrier peut contenir une nouvelle correspondance):

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

Notez les exigences:

  1. Supprimer uniquement les répertoires avec "ChangesLog.txt", car les anciens répertoires ne doivent pas être supprimés.
  2. Appel des commandes du système d'exploitation dans cygwin directement, sinon, il utilisait les commandes Windows par défaut.
  3. Collecter les répertoires à supprimer dans un fichier texte externe afin de enregistrer les résultats de la recherche, puisque parfois le processus de recherche a été suspendu.
  4. Définir un timeout au processus de recherche en utilisant & processus d'arrière-plan qui est tué après 100 secondes.
  5. Tri des répertoires les plus anciens en premier, pour la priorité de suppression.

0