La commande shell ‘find’inetrafec
Publié par patrick le juillet 5, 2007
Voilà des exemples d’utilisation de la commande ‘find’ qui me sont bien utiles quand j’établis un "état des lieux" sur une application:
Rappel: La commande find est récursive, c’est à dire où que vous tapiez, elle va aller scruter dans les répertoires et les sous répertoires de chaque répertoire et ceci de façon récursive.
- http://en.wikipedia.org/wiki/Find ("The find program is a search utility, mostly found on Unix-like platforms. It searches through one or more directory tree(s) of a filesystem, locating files based on some user-specified criteria. By default, find returns all files below the current working directory. Further, find allows the user to specify an action to be taken on each matched file. Thus, it is an extremely powerful program for applying actions to many files. It also supports regexp matching.")
Ici cela s’applique à une application Java:
// Pour compter le nombre de lignes java
find . -name *.java -exec cat {} \; | wc -l// Pour avoir la liste des fichiers java : ça c’est du classique
find . -name *.java -print// Pour effacer tous les fichiers core situés sous mon répertoire :
find . -name core -exec rm {} \;// pour avoir une demande de confirmation avant l’exécution de rm, vous pouvez taper :
find . -name core -ok rm {}\;// Pour connaître les derniers fichiers modifiés dans les 3 derniers jours dans toute l’arborescence (/), vous devez taper :
find / -mtime 3 -print// Pour connaître dans toute l’arborescence, les fichiers dont la taille dépasse 1Mo (2000 blocs de 512Ko), vous devez taper :
find / -size 2000 -print// Vous pouvez chercher dans toute l’arborescence, les fichiers ordinaires appartenant à reza, dont la permission est fixée à 755, on obtient :
find / -type f -user reza -perm 755 -print// rechercher dans le répertoire courant tous les fichiers normaux (sans les répertoires, fichiers spéciaux), et rechercher dans ces fichiers tous ceux contenant la chaîne toto.
find . -type f -print | xargs grep toto// Exemple plus sophistiqué
find . -name *.java | xargs egrep -e "msg" | egrep -e "\".+\""| sort| uniq > aMsgJava.txt// Recherche de la chaîne "DB" dans des programmes php
find . -name *.php -print | xargs grep DB// supprimer des répertoires subversion .svn
find . -name ".svn" -exec chmod -R +w {} \;
find . -name ".svn" -exec rm -R {} \;
Liens:
- - http://www.commandlinefu.com/commands/browse (‘commandlinefu.com is the place to record those command-line gems that you return to again and again. Delete that bloated snippets file you’ve been using and share your personal repository with the world. That way others can gain from your CLI wisdom and you from theirs too. All commands can be commented on, discussed and voted up or down.’)
- http://commandlinefu.uservoice.com/(‘If you have a new feature suggestion or find a bug, please get in touch via http://commandlinefu.uservoice.com/‘)
- - http://fr.wikipedia.org/wiki/Shell_%28informatique%29 (…"Les systèmes d’exploitation de type Unix, GNU/Linux par exemple, disposent le plus souvent d’un shell. Celui-ci est utilisable en conjonction avec un terminal (souvent virtuel). A l’origine, l’interpréteur de commandes par défaut était tcsh (et c’était le Bourne_shell sur les Unix originels), mais aujourd’hui Bash est le plus répandu. Sur les postes de travail, les shells (environnements) graphiques KDE et/ou Gnome sont les plus usités. Il existe d’autres interpréteurs de commandes, notamment zsh et rc.")
- - http://fr.wikipedia.org/wiki/Bash (…"Bash, acronyme de Bourne-again shell, est l’interprète de commandes libre du projet GNU. Son nom est un jeu de mots (Bourne again / born again, « né de nouveau » ou encore « réincarné ») sur le shell historique d’Unix, le Bourne shell. Basé sur ce dernier, il apporte de nombreuses améliorations, provenant notamment du Korn shell et du C shell.Son auteur original est Brian Fox de la Free Software Foundation, relayé plus tard par Chet Ramey. Le Bourne shell original fut écrit par Steve Bourne.Bash est un logiciel libre publié sous licence GPL. Il est l’interprète par défaut sur de nombreux Unix libres, notamment sur les systèmes GNU/Linux. C’est aussi le shell par défaut de Mac OS X et il a été porté sous Windows par le projet Cygwin")
- - http://fr.wikipedia.org/wiki/Commandes_Unix (Les systèmes d’exploitation de type UNIX offrent à leurs utilisateurs des centaines de commandes qui font de la console un outil très pratique et très puissant. Certaines d’entre elles sont fournies directement par le shell, alors que d’autres sont des exécutables situés dans /bin, /usr/bin, /usr/local/bin ou un autre répertoire contenant des exécutables et listé dans la variable d’environnement PATH. La distinction entre /bin et /usr/bin ne relève que de raisons historiques propres aux PDP/11 (/bin était placé sur un tambour magnétique d’accès rapide et de petite taille, /usr/bin sur un disque normal ; sur beaucoup de systèmes actuels, il s’agit d’un lien vers le même système de fichiers.)