supprimer des dossiers de plus d'un jour

Je veux supprimer tous les dossiers qui sont plus vieux que 1 jour avec la command suivante:

find /test -mmin +1440 | xargs rm -rf

Mais la sortie de find lists /test (et le supprimerait en conséquence).

Comment puis-je find uniquement les sous-directorys de /test ? ( -maxdepth / -mindepth non disponible dans AIX)

Comme @meuh l'a dit dans son commentaire, vous pouvez utiliser /test/* au lieu de /test . Votre command pourrait alors ressembler à ceci:

 find /test/* -type d -mmin +1440 | xargs rm -rf 

Dans ce cas, seuls les sous-dossiers de /test seront supprimés.

POSIXly:

 find /test/. ! -name . -type d -mtime +0 -exec rm -rf {} \; -prune 

(nous utilisons -prune pour les directorys que nous supprimons avec succès afin que find ne se plaigne pas qu'ils sont soudainement partis).

Dans tous les cas, notez que l'heure de modification (telle que vérifiée par -mtime ci-dessus) d'un file de directory reflète uniquement la dernière fois qu'une input a été ajoutée, supprimée ou renommée.

Il n'est pas mis à jour lorsque le contenu de l'un des files (de type regular ou directory) est modifié. En particulier, toute modification apscope aux sous-directorys ou à leur contenu n'affecte pas l'heure de modification d'un directory.

Notez que tous -mindepth , -maxdepth et -mmin sont des extensions GNU (bien qu'elles soient sockets en charge dans d'autres implémentations).

L'équivalent standard de find . -maxdepth 1 find . -maxdepth 1 serait:

 find . -name . -o -prune 

Pour -mindepth 1 :

 find . ! -name . 

Pour -mindepth 1 -maxdepth 1 :

 find . ! -name . -prune 

Pour les directorys autres que . , utilisez find some/dir/. ... find some/dir/. ... comme ci-dessus.

Pour les autres valeurs de profondeur, vous pouvez utiliser -path , mais notez que depuis qu'il a été récemment ajouté à la norme, certains systèmes (comme AIX) ne l'ont toujours pas.

Pour: -maxdepth 2 :

 find . ! -path '*/*/*' -o -prune 

Pour: -mindepth 2 :

 find . -path '*/*/*' 

Pour un autre dir:

 find some/dir//. -path '*//*/*/*' 

Eh bien, le mmin primaire est un GNUism qui n'est probablement pas supporté sur AIX car c'est une expansion stupide par rapport à ce que les gens de BSD et moi avons utilisé comme extension dans les années 1980 déjà. Compte tenu du fait que sfind comstack bien sur AIX, je recommand:

 sfind . -mindepth 1 -type d -mtime +24h -exec rm -rf {} + 

Le code est dans schilytools à l' adresse : https://sourceforge.net/projects/schilytools/files/

 touch -t 201508260000 dummyfile find /path/to/files -type f ! -newer dummyfile -delete 

Format d'horodatage yyyyMMddhhmm

La première ligne crée un file qui a été modifié pour la dernière fois le 26 août 2015. La deuxième ligne trouve tous les files dans / path / to / file dont la date n'est pas plus récente que le file dummy, puis les supprime.

Si vous voulez vérifier qu'il fonctionne correctement, supprimez l'argument -delete et il vous suffit de listr les files qui seraient supprimés.

Copié depuis le lien

 find /test -type d -mtime +1| egrep -v '^/test$'|xargs -I{} rm -rf {}