Manipulation de fichiers et de données
Transcription
Manipulation de fichiers et de données
Outils Unix - Exercices Liste des librairies statiques Comment lister toutes les librairies statiques (c.à-d. les noms de fichiers commençant par « lib » et se terminant par « .a ») sous le répertoire courant et ses sous-répertoires ? Manipulation de fichiers et de données Renaud Marlet LaBRI / INRIA http://www.labri.fr/~marlet 1 © 2005 R. Marlet Liste des librairies statiques Liste des librairies statiques Comment lister toutes les librairies statiques (c.à-d. les noms de fichiers commençant par « lib » et se terminant par « .a ») sous le répertoire courant et ses sous-répertoires ? © 2005 R. Marlet 2 © 2005 R. Marlet Comment lister toutes les librairies statiques (c.à-d. les noms de fichiers commençant par « lib » et se terminant par « .a ») apparaissant dans le fichier « Makefile » ? find . -name 'lib*.a' 3 © 2005 R. Marlet 4 Liste des librairies statiques Liste des librairies statiques Comment lister toutes les librairies statiques (c.à-d. les noms de fichiers commençant par « lib » et se terminant par « .a ») apparaissant dans le fichier « Makefile » ? Comment lister toutes les librairies statiques (c.à-d. les noms de fichiers commençant par « lib » et se terminant par « .a ») apparaissant dans le fichier « Makefile » ? grep -w 'lib.*\.a' Makefile 5 © 2005 R. Marlet grep -w 'lib[A-Za-z0-9_]*\.a' Makefile 6 © 2005 R. Marlet Nombre de fichiers C (répertoire courant) Nombre de fichiers C (répertoire courant) Comment compter le nombre de fichiers en langage C sous le répertoire courant (mais pas les sous-répertoires) ? Comment compter le nombre de fichiers en langage C sous le répertoire courant (mais pas les sous-répertoires) ? © 2005 R. Marlet 7 © 2005 R. Marlet ls *.[ch] | wc -l 8 Nombre de fichiers C (répertoire et sous-répertoires) Nombre de fichiers C (répertoire et sous-répertoires) Comment compter le nombre de fichiers en langage C sous le répertoire courant et ses sous-répertoires ? Comment compter le nombre de fichiers en langage C sous le répertoire courant et ses sous-répertoires ? 9 © 2005 R. Marlet 10 © 2005 R. Marlet Nombre de fichiers C (total sur PC) Nombre de fichiers C (total sur PC) Comment compter le nombre de fichiers en langage C sur le PC ( réels ou indexés) ? Comment compter le nombre de fichiers en langage C sur le PC ( réels ou indexés) ? Comment supprimer les messages erreurs (accès interdit, etc.) ? find / -name '*.[ch]' | wc -l locate '*.[ch]' | wc -l Comment supprimer les messages erreurs (accès interdit, etc.) ? © 2005 R. Marlet find . -name '*.[ch]' | wc -l 11 © 2005 R. Marlet find / -name '*.[ch]' 2>/dev/null | wc -l 12 Taille de code C (répertoire courant, par fichier) Taille de code C (répertoire courant, par fichier) Comment compter le nombre de lignes de tous les fichiers en langage C sous le répertoire courant (mais pas les sous-répertoires) ? Comment compter le nombre de lignes de tous les fichiers en langage C sous le répertoire courant (mais pas les sous-répertoires) ? 13 © 2005 R. Marlet wc -l *.[ch] 14 © 2005 R. Marlet Taille de code C (total répertoire courant) Taille de code C (total répertoire courant) Comment compter le nombre total de lignes de tous les fichiers en langage C sous le répertoire courant (mais pas les sous-répertoires) ? Comment compter le nombre total de lignes de tous les fichiers en langage C sous le répertoire courant (mais pas les sous-répertoires) ? © 2005 R. Marlet 15 © 2005 R. Marlet wc -l *.[ch] | grep total cat *.[ch] | wc -l 16 Taille de code C (avec sous-répertoires, par fichier) Taille de code C (avec sous-répertoires, par fichier) Comment compter le nombre de lignes de tous les fichiers en langage C sous le répertoire courant et ses sous-répertoires ? Comment compter le nombre de lignes de tous les fichiers en langage C sous le répertoire courant et ses sous-répertoires ? 17 © 2005 R. Marlet wc -l `find . -name '*.[ch]'` 18 © 2005 R. Marlet Taille de code C (total, avec sous-répertoires) Taille de code C (total, avec sous-répertoires) Comment compter le nombre total de lignes de tous les fichiers en langage C sous le répertoire courant et ses sous-répertoires ? Comment compter le nombre total de lignes de tous les fichiers en langage C sous le répertoire courant et ses sous-répertoires ? © 2005 R. Marlet 19 © 2005 R. Marlet wc -l `find . -name '*.[ch]'` | grep total cat `find . -name '*.[ch]'` | wc -l 20 Taille de code C (total sur PC) Taille de code C (total sur PC) Comment compter le nombre total de lignes de tous les fichiers en langage C sur le PC ? Comment compter le nombre total de lignes de tous les fichiers en langage C sur le PC ? 21 © 2005 R. Marlet Nombre de programmes C (total sur PC) Comment compter le nombre total de lignes de tous les fichiers en langage C sur le PC ? © 2005 R. Marlet 22 © 2005 R. Marlet Taille de code C (total sur PC) cat `locate '*.[ch]'` | wc -l Comment compter (approximativement) le nombre programmes sources C sur le PC ? locate '*.[ch]' | xargs cat | wc -l 23 © 2005 R. Marlet 24 Nombre de programmes C (total sur PC) Note : Environnements de programmation intégrés Comment compter (approximativement) le nombre programmes sources C sur le PC ? grep -w 'main *(' `locate '*.[ch]'` | wc -l locate '*.[ch]' | xargs grep -w 'main *(' | wc -l 25 © 2005 R. Marlet Environnement de programmation : Visual C++, Eclipse, Kdevelop, ... Fonctions intégrées : édition, compilation, recherche, modifications statistiques, ... Recherche de tous les fichiers récents Recherche de tous les fichiers récents Comment lister tous les fichiers du répertoire courant ou de ses sous-répertoires qui ont été créés ou modifiés depuis un jour au plus ? Comment lister tous les fichiers du répertoire courant ou de ses sous-répertoires qui ont été créés ou modifiés depuis un jour au plus ? © 2005 R. Marlet 26 © 2005 R. Marlet 27 © 2005 R. Marlet find . -newermt '1 day ago' 28 Recherche de tous les fichiers plus vieux que ... Recherche de tous les fichiers plus vieux que ... Comment lister tous les fichiers du répertoire courant ou de ses sous-répertoires qui ont été créés avant le 25 décembre 2004 ? Comment lister tous les fichiers du répertoire courant ou de ses sous-répertoires qui ont été créés avant le 25 décembre 2004 ? find . \! -newerct '12/25/2004' Attention! () Notation américaine : « 12/25/05 » = 25 déc 2005 29 © 2005 R. Marlet 30 © 2005 R. Marlet Retirer les lignes vides Retirer les lignes vides Comment retirer toutes les lignes vides (c.-à-d. ne contenant, éventuellement, que des espaces) d'un fichier ? Comment retirer toutes les lignes vides (c.-à-d. ne contenant, éventuellement, que des espaces) d'un fichier ? d'un pipe ? © 2005 R. Marlet grep -v '^ *$' FICHIER ... | grep -v '^ *$'r ? d'un pipe ? 31 © 2005 R. Marlet 32