find, pipes et redirections
grep filtre du texte, mais comment trouver des fichiers selon leur nom, date ou taille ? Et comment combiner plusieurs commandes pour en faire une pipeline d'analyse ? Ce sont les deux super-pouvoirs du shell Linux — maîtrisez-les et vous réaliserez en une ligne ce qui prendrait des heures manuellement.
find — trouver des fichiers
find /var/log -name "*.log" # par nom (glob)
find /home -name "*.bak" -type f # seulement des fichiers (-type f)
find /tmp -type d # seulement des dossiers (-type d)
find /var/log -mtime -1 # modifiés dans les dernières 24h
find /var/log -mtime +30 # modifiés il y a plus de 30 jours
find /var/www -size +10M # plus de 10 Mo
find /var/www -size +100M -delete # trouver ET supprimer (ATTENTION)
find /etc -name "*.conf" -newer /etc/hosts # plus récents que /etc/hosts
Exécuter une commande sur chaque résultat
find /var/log -name "*.log" -exec ls -lh {} \;
find /tmp -mtime +7 -exec rm {} \; # supprimer les fichiers de plus de 7 jours