Étiquette : find

8 juillet 2019 /

Lorsque le nombre de fichiers dans un répertoire dépasse les 30000, cela peut constituer un problème.

Voici les étapes à suivre pour mener à bien cette tâche:
1) Recherche tous les fichiers .txt dans le répertoire courant et ses sous-répertoires, puis écrit la liste complète de leurs chemins dans le fichier temporaire /tmp/fichiers_a_archiver.
find . -name '*.txt' -print > /tmp/fichiers_a_archiver
2) Crée une archive gzip (fichiers_a_archiver.tar.gz) contenant exactement les fichiers listés dans /tmp/fichiers_a_archiver.
L’option –files-from permet à tar de ne prendre que ces fichiers (très utile pour archiver sélectivement).
tar -cvzf fichiers_a_archiver.tar.gz --files-from /tmp/fichiers_a_archiver
3) Supprime tous les fichiers .txt trouvés (avec -v pour voir ce qui est supprimé).
find . -name '*.txt' | xargs rm -v
25 avril 2019 /
1. Avec tree (liste les 20 plus gros éléments par taille)
tree -ihafF / | tr '[]' ' ' | sort -k1hr | head -20
2. Avec find (liste les 20 plus gros fichiers uniquement)
find / -type f -exec du -h {} \; 2>/dev/null | sort -rh | head -20
4 juin 2018 /
1. Sauvegarder les fichiers de plus de 180 jours dans une archive compressée
find . -mtime +180 -print0 | xargs -0 tar -zcf ../backup_04-06-2018.tar.gz
ou
find . -mtime +180 -print0 | xargs -0 tar -zcf "../backup_$(date +%d-%m-%Y).tar.gz"
Explication :

  • find . -mtime +180 : trouve les fichiers modifiés il y a plus de 180 jours.
  • -print0 + xargs -0 : gère correctement les noms de fichiers avec espaces, apostrophes, caractères spéciaux (très sûr).
  • tar -zcf ../backup_…tar.gz : crée l’archive gzip directement à partir de la liste fournie par xargs (sans passer par un fichier temporaire).
2. Compter le nombre de fichiers sauvegardés
find . -mtime +180 -exec ls -1 {} + | wc -l
Explication :

  • Liste les fichiers concernés (un par ligne avec ls -1).
  • wc -l compte les lignes → nombre de fichiers.

Variante plus précise (sans ls) :

find . -mtime +180 -print | wc -l
3. Supprimer les fichiers après sauvegarde
find . -mtime +180 -exec rm {} +
Explication :

  • -exec rm {} + : supprime les fichiers trouvés de façon efficace (regroupe les arguments autant que possible).

Attention maximale : cette commande est irréversible. Toujours tester d’abord avec -ls ou -print avant de passer à -exec rm.

Séquence complète:
# 1. Création de l'archive (adapte le chemin et le nom)
find . -mtime +180 -print0 | xargs -0 tar -zcf "../backup_$(date +%d-%m-%Y).tar.gz"

# 2. Vérification du nombre de fichiers concernés
find . -mtime +180 -print | wc -l

# 3. Suppression (À EXÉCUTER UNIQUEMENT APRÈS VÉRIFICATION !)
find . -mtime +180 -exec rm {} +

 

16 février 2018 /

Effacer les fichiers de plus de 7 jours dans /tmp:

find /tmp -mtime +7 -exec rm {} \;

Effacer les fichiers de moins de 7 jours dans /tmp:

find /tmp -mtime -7 -exec rm {} \;

1 février 2018 /

[pastacode lang= »bash » manual= »find%20.%20-type%20f%20-newermt%20%222017-12-09%2010%3A45%3A00%22%20!%20-newermt%20%222017-12-09%2010%3A55%3A00%22″ message= »Afficher les fichiers modifiés entre 10h45 et 10h55 le 9 décembre 2017″ highlight= » » provider= »manual »/]

[pastacode lang= »bash » manual= »find%20.%20-type%20f%20-newermt%20%222017-12-01%22%20!%20-newermt%20%222017-12-31%22%20-not%20-name%20%22*.LOG%22%20-a%20-not%20-name%20%22*.log%22″ message= »Afficher les fichiers modifiés en décembre 2017 qui ne sont pas des fichiers .log » highlight= » » provider= »manual »/]

[pastacode lang= »bash » manual= »find%20.%20-type%20f%20-newermt%20%222017-12-09%22%20!%20-newermt%20%222017-12-10%22″ message= »Afficher les fichiers modifiés le 9 décembre 2017″ highlight= » » provider= »manual »/]

[pastacode lang= »bash » manual= »find%20.%20-type%20f%20-newerat%202017-12-09%20!%20-newerat%202017-12-10″ message= »Afficher les fichiers dont le dernier accès remonte 9 décembre 2017″ highlight= » » provider= »manual »/]

[pastacode lang= »bash » manual= »find%20.%20-type%20f%20-newerct%202017-12-09%20!%20-newerct%202017-12-10″ message= »Afficher les fichiers dont les droits ont été changés le 9 décembre 2017″ highlight= » » provider= »manual »/]

[pastacode lang= »bash » manual= »find%20.%20-maxdepth%201%20-mtime%20%2B180%20-type%20f%20-exec%20mv%20%22%7B%7D%22%20%2Fhome%2Fbackup%20%5C%3B » message= »Deplacer les fichiers vieux de X jours (ici 180) dans un repertoire » highlight= » » provider= »manual »/]