Académique Documents
Professionnel Documents
Culture Documents
• Utiliser les commandes des filtres simples : sort, head, tail, more, tee, uniq, wc, tr, cut,
• Maitriser les expressions régulières (ou rationnelle),
• Utiliser les commandes de filtres à expressions régulières : find, grep,
• Utiliser les commandes find et grep avec –exec et xargs pour l’exécution de commandes et le passage
d’arguments,
• Effectuer des commandes complexes combinant redirection, tube et expressions régulières.
head et tail
Les commandes head et tail permettent d’afficher les n premières (respectivement dernières) lignes d’un fichier.
more et less
sort
La commande sort permet de trier un fichier dans l’ordre croissant ou décroissant selon nue colonne.
Afficher les utilisateurs inscrits dans le fichier /etc/passwd dans l’ordre croissant des uid.
tee
La commande tee écrit l’entrée standard simultanément sur la sortie standard et sur le fichier passé en paramètre.
Écrire une commande qui affiche "Bonjour" à l’écran et en même temps crée un fichier nommé
"Salutation.txt" dont le contenu est le même message.
uniq
La commande uniq permet de détecter les lignes en doublons successifs dans les fichiers et de les supprimer (dans
le résultat et non pas dans le fichier)
Créer un fichier qui comporte des noms de personnes par ligne avec quelques noms en doublons.
Afficher dans la console la liste des noms sans doublons successifs.
Afficher le nombre d’occurrence de chaque ligne du fichier.
Afficher uniquement les lignes qui se répètent.
La commande wc permet de compter le nombre de lignes, de mots ou de caractères depuis l’entrée standard ou un
fichier.
Compter le nombre d’utilisateurs et le nombre de groupes.
tr
La commande tr (translate) permet traiter une chaine de caractère par une autre chaine et le résultat est envoyé sur
la sortie standard. (les données à traiter sont redirigés en entrée par fichier)
Afficher le fichier /etc/passwd en remplaçant les caractères « ,,, » par des « ... » (dans le champ
commentaire).
Obtenir le résultat précédent page par page.
Que font les commandes suivantes :
tr 'a,/' 'A;_' < fich1 > fich2 avec fich1 est une copie du fichier /etc/group par redirection.
tr 'a-z' 'A-Z' < fich1 | tee fich2
tr –s [:blank:] ‘\t’ < fich1 > fich2
tr –d [:digit:] < fich1 |sort | uniq > fich2
cut
La commande cut permet d’afficher une portion de chaque ligne du fichier passé en paramètre ou à défaut de
l’entrée standard. cut présente 2 formes suivant que l'on sélectionne des colonnes de caractères ou qu'on distingue
des champs séparés par un caractère précis.
Exemples :
L'expression [a-z][a-z] * cherche les lignes contenant au minimum un caractère en minuscule. [a-z] caractère
permis, [a-z]* recherche d'occurrence des lettres permises (entre 0 et plus).
L'expression ^[0-9]\{4\}$ a pour signification, du début ^ à la fin du fichier $ ,recherche les nombres [0-9] de 4
chiffres \{4\}.
Commande FIND
La commande find permet de rechercher des fichiers et des répertoires. C’est une commande indispensable,
très puissante mais assez complexe car contient beaucoup d’options.
Syntaxe: find < répertoire de recherche> <option > <critère de recherche> <action sur le résultat trouvé>
Exemple : find / -name *.txt -print cherche tous les fichiers qui commencent par une suite de caractères et
se terminent par .txt puis les afficher.
Les options de find ne sont pas sur une seule lettre mais on prend le nom entier de l’option et avec un seul
tiret ( -) . (Contrairement aux autres commandes qui utilisent les doubles tirets (--)).
Remarque : pour ne pas avoir les messages d’erreurs de permissions non accordés, on utilise un sudo avant le find.
Options :
Option -lname : cherche dans les cibles les link (liens symboliques)
find / -lname lien* -print
Option -iname : pour faire uen recherche à partir d’une expression rationnelle.
find / -iname "[pt]louf.txt" -print qui commence par un p ou un t puis louf.txt
Le chiffre qui suit –atime ou –ctime ou –mtime est exprimé en nombre de jours.
find /home -atime 1 -print tous les fichiers qui ont été accédé il y a un jour.
find /home -amin 1 -print tous les fichiers qui ont été modifiés il y a une minute.
Pour la valeur on peut lui ajouter un + ou un -. (+1 veut dire plus d’un jour et -1 veut dire moins d’un jour)
Amir Souissi © 2017 TP N° 6 _ Atelier Système 2 (Linux) 3
Option -newer : cherche les fichiers qui ont été modifiés après fich1.
Option -anewer : chercher tous les fichiers qui ont été accédés après fich1.
Option -cnewer : pour les fichiers changés après fich1
Les valeurs possibles de –size sont b pour bloc c pour caractère (octet) et k pour kilooctet
find . -size 12k -print les fichiers qui font 12 kilo octets. (+12k pour plus de 12 kilooctets,
et -12k pour moins de 12 kilooctets)
Exécuter des commandes sur le résultat de find : l’option -exec et la commande xargs
Rappel : find < répertoire de recherche> <option > <critère de recherche> <action sur le résultat trouvé>
-exec commande
-print est une option de commande qui permet de réaliser l’action d’affichage sur le résultat trouvé par la
recherche.
Pour réaliser une action sur les fichiers trouvés (de copie, de suppression, …), on utilise l’option -exec suivie
de la commande à réaliser.
Le fichier en cours sur lequel portera l’action de la commande après le –exec est repéré par les {} et elle doit
se terminer par un ; précédé par le caractère d’échappement \.
Exemple : find . -name fich* -exec rm {} \ ; Effacer les fichiers qui commencent par fich du rep. courant.
xargs commande
Commande GREP
Une autre commande très utilisée et très pratique est la commande grep. Elle sert à faire une recherche à l’intérieur
d’un ou de plusieurs fichiers.
Exemples : grep "^#" /etc/fstab chercher toutes les lignes qui commencent par un # (les commentaires) dans
fstab.
grep "PATH" /etc/* cherche le mot PATH dans tous les fichiers du répertoire /etc.
Remarque : Le pattern trouvé est coloré en rouge dans le résultat trouvé par grep.
Exemples : grep "print" /etc/fstab afficher les lignes qui contiennent le mot « print »
grep "^#$" /etc/fstab afficher les lignes avec des commentaires vides.
Option -w: cherche le mot complet correspondant au critère et non pas une partie du mot.
sudo grep –iw "Print" . Chercher le mot print dans tous les fichiers du répertoire courant.
Option -r : fait une recherche récursive dans tous les sous répertoires.
Remarques :
1. Chercher les fichiers cachés (dont le nom commence par un .) dans le répertoire courant, et qui contiennent
le mot « term » pour ensuite les supprimer.
2. find ~ -type f -exec grep -il ‘term’ {} \; Que fait cette commande ? réaliser la même chose avec un
pipe.
3. 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.
4. Testez la commande : find . -type f | xargs grep matrice, puis la commande find . -type f | grep matrice.
Remarquez les résultats.
5. Vous chercherez dans votre répertoire «fic_C» les fichiers d'extension «.c» dans lesquels se trouvent une
ligne contenant l'instruction «if» et afficherez les lignes. Pour cela vous utiliserez 2 méthodes, une avec le
pipe et l'autre avec l'option «exec». Quelles sont les différences.
6. Rechercher tous les fichiers d'anciennes sauvegardes (qui terminent par '' ~'') qui ont été créés les 5 derniers
jours ou depuis au moins 10 jours, et supprimer ceux qui contiennent au moins un ''if''.