"…mais ce serait peut-être l'une des plus grandes opportunités manquées de notre époque si le logiciel libre ne libérait rien d'autre que du code…"

La commande shell ‘find’inetrafec

Posted by patrick sur 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://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. »)

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

 
%d blogueurs aiment cette page :