Fichiers de plus de 1 Go et de plus de 6 mois

20

Je souhaite rechercher des fichiers supérieurs à 1 Go et antérieurs à 6 mois sur l'ensemble du serveur. Comment écrire une commande pour cela?

shinek
la source

Réponses:

37

Utilisation find:

find /path -mtime +180 -size +1G

-mtimesignifie rechercher des délais de modification supérieurs à 180 jours (+180). Et le -sizeparamètre recherche les fichiers supérieurs à 1 Go.

le chaos
la source
2
Notez que dans les findimplémentations où ce Gsuffixe est pris en charge, cela signifie GiB (1073741824 octets), pas GB (1000000000). Portablement, vous utiliseriezfind /path -mtime +180 -size +1073741824c
Stéphane Chazelas
1
si vous voulez éviter de voir des erreurs entre la liste de fichiers comme ceux-ci: find: a.txt :Permission deniedje suggère d'ajouter ceci 2>/dev/nullinspiré de ce commentaire: unix.stackexchange.com/questions/42841/…
gmansour
Vous pouvez également diriger les résultats vers xargs ls -lhSpour les trier par taille: find /path -mtime +180 -size +1G | xargs ls -lhS
user553965
@ user553965 Votre commande ne fonctionnera pas. Ce qui est réellement nécessaire pour trier par taille est: find / -size +1G -mtime +180 -print0 2>/dev/null | xargs -0 ls -lhS. Note aux débutants: La redirection de 2>/dev/nullse débarrasse simplement des permission deniederreurs qui apparaîtront inévitablement lors de la recherche à partir de la racine. Pour trier par date de dernière modification, utilisez ls -lhtplutôt et ajoutez raux lscommandes, par exemple ls -lhSr, inversera les résultats (du plus petit au plus grand / du plus ancien au plus récent).
mattst
6

find / -size +1G -mtime +180 -type f -print

Voici l'explication de la commande option par option: A partir du répertoire racine, il trouve tous les fichiers supérieurs à 1 Go, modifiés il y a plus de 180 jours, de type "fichier", et imprime leur chemin.

dr01
la source