Bonjour,
Sauriez vous quelle commande utiliser pour supprimer les n plus vieux fichier d'un dossier ?
merci!
Bonjour,
Sauriez vous quelle commande utiliser pour supprimer les n plus vieux fichier d'un dossier ?
merci!
bonjour,
Code : Sélectionner tout - Visualiser dans une fenêtre à part man find
Merci pour ta réponse, j'avais bien trouvé cette commande, mais je ne sais pas trop comment l'utiliser.
Bonjour,
Find ne permet pas de trier par date, celui-ci sort les fichier dans l'ordre d'apparition sur le filesystem.
Sinon, ta demande est loin d'être claire, qu'appelles tu les plus vieux fichiers (acces ou changement) ?
Voila un exemple qui fonctionne pour un seul répertoire et celui-ci ne controle pas le type de fichier que cela peut-être, donc si dans ton répertoire tu peux avoir d'autres répertoires par exemple, il faut la retravailler:
Ici, il y a un echo pour afficher la commande rm, une fois que la commande te semble ok, suffit de supprimer le echo.
Code : Sélectionner tout - Visualiser dans une fenêtre à part stat -c '%y;%n' * | sort -t \; -k1 | head -10 | cut -d \; -f2 | xargs -IXXX echo rm "XXX"
Une méthode s'appuyant sur find:
Code : Sélectionner tout - Visualiser dans une fenêtre à part find dossier -type f -printf "%T@ %p\n" | sort -n | head | sed 's/[^ ]* //' | xargs -I{} echo rm -i {}
Super, merci, j'ai remplacé echo par sudo, ca marche, cool.
En revanche je souhaite utiliser ce code (sans le sudo) dans un programe C++
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 stat -c '%y;%n' * | sort -t \; -k1 | head -10 | cut -d \; -f2 | xargs -IXXX sudo echo rm "XXX"
j'ai une erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 system("stat -c '%y;%n' * | sort -t \; -k1 | head -10 | cut -d \; -f2 | xargs -IXXX rm \"XXX\"");
sort: l'option requiert un argument --t
sh: -k1 : commande introuvable !!
Une idée ?
Bonjour
Totalement logique. La contre-oblique suivie du point-virgule est interprété par le C++ et remplacée par un point-virgule. Du coup, l'option -t n'a pas d'argument, il proteste et le point virgule finit la commande ce qui veut dire que -k1 est une commande. Et il proteste à nouveau.
Mets ton point-virgule entre 'simple quotes' plutôt que de l'échapper par la contre-oblique.
Personnellement, utiliser une batterie de commande linux pour les englober dans du C++, je ne trouve pas ça terrible.
Surtout qu'il existe des primitives qui permettent de retourner la liste des fichiers ainsi que leur date de modification, après c'est un banal tri sur la date.
Partager