Comment supprimer tous les fichiers créés il y a n minutes sous Linux

13

Je suppose que dans la plupart des cas, lors de l'extraction d'une archive tar, nous obtiendrons un répertoire avec le même nom que le fichier d'archive mais un suffixe différent. Mais dans certains cas malchanceux, comme je l'ai rencontré aujourd'hui, après avoir extrait une archive tar, je trouve beaucoup de fichiers répartis dans le répertoire de travail, ce qui est une nuisance.

Donc, ce que je veux apprendre de vous, c'est - comment puis-je déplacer ces fichiers nouvellement créés? Je sais que cela devrait être une approche sophistiquée "trouver plus rm", mais je ne sais pas exactement comment.

HaiYuan Zhang
la source

Réponses:

23

Je me demande ce man findque dirait. Ensuite, vous pouvez même montrer vos efforts.

find . -type f -cmin -1
find . -type f -cmin -1 -delete
  • Le -type fest utilisé pour spécifier que seuls les fichiers normaux sont sélectionnés.
  • L'état -cmin -1du fichier a été modifié pour la dernière fois en moins d'une (une) minute.
  • Le -deletedrapeau indique à find de supprimer tous vos fichiers électroniques dans l'univers connu ou quelque chose comme ça, alors soyez prudent lorsque vous l'utilisez.

Faire d' abord un test de fonctionnement sans le -deletedrapeau est fortement recommandé.

Remarque -deleteest une extension non portable.

Je recommande de lire la findpage de manuel avant de l'utiliser, car elle couvre divers pièges et avertissements qui peuvent s'appliquer dans votre situation.

mctylr
la source
Agréable! -delete semble plus facile que -exec rm {} \;
PJ Brunet
+1 pour avoir pris le temps d'expliquer les choix d'options
Jad S
5
find . -mtime -60s -exec mv {} /dest/dir \;

Recherche tous les fichiers du répertoire actuel (et des sous-répertoires) qui ont été modifiés au cours des 60 dernières secondes et déplacez-les dans / dest / dir.

skarface
la source
3
Des fichiers d'archives soigneusement extraits peuvent conserver la date de modification d'origine. Il est préférable d'utiliser le temps de création.
Cem Kalyoncu
@CemKalyoncu grand point.
skarface
0

La manière la plus simple (à condition que vous n'ayez pas d'interface graphique) sera d'utiliser mc . Il peut trier les fichiers par date.

Vous pouvez également supprimer les fichiers qui se trouvaient dans le tar depuis la ligne de commande:

> rm $( tar -ztf mytar.tar.gz )

(-ztf) concerne les fichiers tar.gz. Vous pouvez utiliser (-tf) pour les tars normaux ou (-jtf) pour les fichiers tar.bz2.

Si la liste des fichiers est trop grande et que la commande ci-dessus s'étouffe, vous pouvez utiliser xargs:

> tar -ztf mytar.tar.gz | xargs rm
Ensoleillé
la source
wow, mon mauvais - je n'ai pas vraiment lu la question - vous devez les déplacer, pas les supprimer (pls, corriger le titre, c'est trompeur). Je suppose que vous pouvez toujours les supprimer, puis créer un nouveau répertoire, et y décompresser :). Après tout, déplacez = copier + supprimer.
Sunny