GNU/Linux >> Tutoriels Linux >  >> Linux

Trouver des répertoires contenant tous les fichiers antérieurs à X ?

Il est probablement possible de le faire sans créer de fichiers à l'aide de la substitution de processus ou autre, mais voici une solution simple et rapide :

find . -type f -mtime +30 -printf '%h\n' | sort | uniq > old.txt
find . -type f -mtime -30 -printf '%h\n' | sort | uniq > new.txt
grep -vf new.txt old.txt

La première commande affiche le chemin de chaque fichier modifié il y a plus de 30 jours (dans le -printf de find -- au moins avec la découverte GNU sur mon système -- %h imprime tout le chemin sauf le nom de fichier réel), puis les trie et se débarrasse de tous les doublons, et met le tout dans un fichier appelé old.txt .

La deuxième commande fait la même chose mais avec chaque fichier modifié il y a moins de 30 jours, et les place dans un autre fichier, new.txt .

La ligne grep imprime chaque ligne de old.txt qui n'apparaît pas dans new.txt -- elle vous donnera donc une liste de répertoires contenant seulement fichiers dont la dernière modification remonte à plus de 30 jours.

Tout cela utilise les versions GNU des utilitaires. Je ne sais pas si la syntaxe correspond aux versions BSD, etc.


J'ai enfin compris la phrase magique :

for dir in `find . -type d -mtime +30`; do test `find $dir -type f -mtime -30 -print -quit` || echo $dir; done

Cela imprime tous les répertoires dont l'heure de modification est supérieure à 30 jours et aucun fichier modifié au cours des 30 derniers jours.


Linux
  1. Supprimer tous les fichiers/répertoires sauf un fichier ?

  2. Supprimer tous les fichiers sauf dans un certain sous-répertoire avec Find ?

  3. Afficher tous les fichiers ".sh" d'une taille supérieure à 5 ko ?

  4. Comment rechercher des fichiers avec la commande fd sous Linux

  5. Comment trouver tous les fichiers de plus de 1 Go sous Linux ?

Rechercher des fichiers et des répertoires sous Linux avec la commande find

Comment trouver un fichier sous Linux dans tous les répertoires de manière récursive

Comment supprimer des fichiers plus anciens que les jours spécifiés sous Linux

Répertorier de manière récursive tous les fichiers d'un répertoire, y compris les fichiers des répertoires de liens symboliques

Trouver tous les fichiers dont le nom contient une chaîne

Trouver tous les fichiers de plus d'une minute