361 lines
13 KiB
HTML
361 lines
13 KiB
HTML
<?xml version="1.0" encoding="UTF-8"?>
|
||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||
<head>
|
||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||
<title>Chercher</title>
|
||
<link rel="stylesheet" href="../tuteurs.css" type="text/css" />
|
||
</head>
|
||
<body>
|
||
<div class="navigation">
|
||
<h1>Tuteurs informatique<br /><a href="../meta/contact.html">Nous contacter</a></h1>
|
||
<hr />
|
||
<ul class="menu">
|
||
<li>
|
||
<a href="../meta/charte_graphique.html">Utiliser ce site</a>
|
||
</li>
|
||
<li>
|
||
<a href="../actualite.html">Actu et stages</a>
|
||
</li>
|
||
<li>
|
||
<a href="../docs/">Docs à imprimer</a>
|
||
</li>
|
||
<li>
|
||
<a href="../meta/plan_site.html">Plan du site</a>
|
||
</li>
|
||
<li>
|
||
<a href="../search.html">Rechercher</a>
|
||
</li>
|
||
</ul>
|
||
<hr />
|
||
<ul class="arbre">
|
||
<li>
|
||
<a href="../">Les tuteurs</a>
|
||
<ul class="arbre">
|
||
<li>
|
||
<a href="./">Unix</a>
|
||
<ul class="arbre">
|
||
<li>
|
||
<a href="accents-base.html">Accents</a>
|
||
</li>
|
||
<li>
|
||
<a href="aide.html">Aide</a>
|
||
</li>
|
||
<li>
|
||
<a href="archives.html">Archiver</a>
|
||
</li>
|
||
<li>
|
||
<a href="chercher.html" class="actuel">Chercher</a>
|
||
</li>
|
||
<li>
|
||
<a href="clavier.html">Clavier, souris</a>
|
||
</li>
|
||
<li>
|
||
<a href="communiquer.html">Autres utilisateurs</a>
|
||
</li>
|
||
<li>
|
||
<a href="config/">Config conscrits</a>
|
||
</li>
|
||
<li>
|
||
<a href="copyright.html">Copyrights</a>
|
||
</li>
|
||
<li>
|
||
<a href="disquettes.html">Disquettes</a>
|
||
</li>
|
||
<li>
|
||
<a href="divers.html">Divers</a>
|
||
</li>
|
||
<li>
|
||
<a href="droits.html">Droits d'accès</a>
|
||
</li>
|
||
<li>
|
||
<a href="editeurs/">Éditeurs</a>
|
||
</li>
|
||
<li>
|
||
<a href="exercices/">Exercices</a>
|
||
</li>
|
||
<li>
|
||
<a href="fichiers.html">Fichiers</a>
|
||
</li>
|
||
<li>
|
||
<a href="formats-memo.html">Mémo formats</a>
|
||
</li>
|
||
<li>
|
||
<a href="histoire.html">Histoire</a>
|
||
</li>
|
||
<li>
|
||
<a href="imprimer.html">Imprimer</a>
|
||
</li>
|
||
<li>
|
||
<a href="jamais.html">Jamais !</a>
|
||
</li>
|
||
<li>
|
||
<a href="jeux.html">Jeux</a>
|
||
</li>
|
||
<li>
|
||
<a href="loguer.html">Se loguer</a>
|
||
</li>
|
||
<li>
|
||
<a href="media.html">Supports de données amovibles</a>
|
||
</li>
|
||
<li>
|
||
<a href="place_disque.html">Place disque</a>
|
||
</li>
|
||
<li>
|
||
<a href="prelude.html">Unix</a>
|
||
</li>
|
||
<li>
|
||
<a href="processus.html">Processus</a>
|
||
</li>
|
||
<li>
|
||
<a href="repertoires.html">Répertoires</a>
|
||
</li>
|
||
<li>
|
||
<a href="shell/">Shell</a>
|
||
</li>
|
||
<li>
|
||
<a href="systemes_fichiers.html">Systèmes de fichiers</a>
|
||
</li>
|
||
<li>
|
||
<a href="unix-technique.html">Machines Unix</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<hr />
|
||
<ul class="menu">
|
||
<li>
|
||
<a href="http://www.eleves.ens.fr/">Serveur des élèves</a>
|
||
</li>
|
||
<li>
|
||
<a href="http://www.ens.fr/">ENS</a>
|
||
</li>
|
||
<li>
|
||
<a href="http://www.spi.ens.fr/">SPI</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="corps">
|
||
<h1>Chercher des mots et des fichiers sous Unix</h1>
|
||
<div class="sommaire">
|
||
<ul>
|
||
<li>
|
||
<a href="#grep">Chercher des mots : <code>grep <em>mot fichiers</em></code></a>
|
||
<ul>
|
||
<li>
|
||
<a href="#s1_1">Syntaxe</a>
|
||
</li>
|
||
<li>
|
||
<a href="#s1_2">Options de <code>grep</code></a>
|
||
</li>
|
||
<li>
|
||
<a href="#s1_3">Confort</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<a href="#find">Trouver un fichier : <code>find</code></a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<h2>
|
||
<a name="grep" id="grep">Chercher des mots : <code>grep <em>mot fichiers</em></code></a>
|
||
</h2>
|
||
<h3>
|
||
<a name="s1_1" id="s1_1">Syntaxe</a>
|
||
</h3>
|
||
<p><strong><code>grep</code><em> mot fichiers</em></strong> sert à retrouver
|
||
une chaîne de caractères dans des fichiers (<code>zgrep</code>, beaucoup moins
|
||
standard, s'utilise avec les fichiers compressés). Nous n'entrerons pas dans
|
||
les détails de la syntaxe. Il suffit de savoir que :
|
||
</p>
|
||
<table>
|
||
<tr>
|
||
<td>
|
||
<code>*.tex</code>
|
||
</td>
|
||
<td>(étoile point tex)</td>
|
||
<td>signifie « n'importe quel fichier <code>.tex</code> »
|
||
(<code>*.tex</code> signifie « tout ce qui ne commence pas par un point et
|
||
qui finit par <code>.tex</code> »).</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<code>**/</code>
|
||
</td>
|
||
<td>(étoile étoile)</td>
|
||
<td>désigne le répertoire courant et tous ses sous-répertoires.</td>
|
||
</tr>
|
||
</table>
|
||
<p>
|
||
Donc :
|
||
</p>
|
||
<table class="tableau">
|
||
<tr>
|
||
<th> Pour chercher «coucou» dans </th>
|
||
<th> On tape </th>
|
||
</tr>
|
||
<tr>
|
||
<td> Tous les fichiers <code>.tex</code> du répertoire où l'on se trouve </td>
|
||
<td>
|
||
<code>grep coucou *.tex</code>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td> Tous les fichiers du répertoire où l'on se trouve </td>
|
||
<td>
|
||
<code>grep coucou *</code>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td> Tous les fichiers <code>.tex</code> du répertoire courant et de ses
|
||
sous-répertoires </td>
|
||
<td>
|
||
<code>grep -r --include="*.tex" coucou</code>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td> Tous les fichiers du répertoire courant et de ses sous-répertoires </td>
|
||
<td>
|
||
<code>grep -r coucou .</code>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<p>
|
||
Par exemple, Toto cherche le mot «travail» dans tous les fichiers
|
||
<code>.tex </code> du répertoire où il se trouve :
|
||
</p>
|
||
<pre><span class="prompt">corvette ~ $</span> grep travail *.tex
|
||
caire.tex:les voit presque tous les matins, travailler par équipes de deux ou
|
||
jordanie.tex:méridionale, le socle ancien apparaît. Le travail de l'érosion dans les
|
||
jordanie.tex:Le pays compte également sur les remises des travailleurs expatriés qui, au
|
||
</pre>
|
||
<p>
|
||
Quand plusieurs fichiers sont parcourus, <code>grep</code> indique dans quel
|
||
fichier se trouve le mot demandé (mot au sens de «chaîne de caractères»).
|
||
</p>
|
||
<h3>
|
||
<a name="s1_2" id="s1_2">Options de <code>grep</code></a>
|
||
</h3>
|
||
<p>
|
||
Il y a différentes options à <code>grep</code>, dont :
|
||
</p>
|
||
<ul>
|
||
<li><code>grep -n</code> : indique le <em> numéro</em> de la ligne où
|
||
figure le mot.
|
||
</li>
|
||
<li><code>grep -C</code> (<em> contexte</em>) : fait figurer les deux
|
||
lignes qui précèdent et suivent la ligne où figure le mot recherché.
|
||
</li>
|
||
<li><code>grep -i</code> (<em>ignore case</em>) : fait ignorer la
|
||
casse des caractères (différence entre majuscules et minuscules).
|
||
</li>
|
||
<li><code>grep -c</code> (<em>count</em>) : indique le nombre de lignes
|
||
où figure au moins une fois le mot recherché dans chacun des fichiers passés
|
||
en revue.
|
||
</li>
|
||
</ul>
|
||
<p>
|
||
Bien entendu, ces options sont compatibles entre elles :
|
||
</p>
|
||
<pre><span class="prompt">corvette ~ $</span> grep -nC travail caire.tex
|
||
caire.tex-371-société. On compte environ 40\,000 de ces éboueurs chiffonniers qui
|
||
caire.tex-372-vivent dans de misérables bidonvilles aux abords de la capitale. On
|
||
caire.tex:373:les voit presque tous les matins, travailler par équipes de deux ou
|
||
caire.tex-374-trois hommes, habillés comme des épouvantails, avec des chapeaux de
|
||
caire.tex-375-paille et de vieux vêtements hétéroclites; accompagnés de leurs
|
||
<span class="prompt">corvette ~ $</span> grep -c travail *.tex
|
||
caire.tex:1
|
||
egypte.tex:0
|
||
jordanie.tex:2
|
||
syrie.tex:0
|
||
</pre>
|
||
<h3>
|
||
<a name="s1_3" id="s1_3">Confort</a>
|
||
</h3>
|
||
<p><strong>Défilement</strong> : il peut arriver que le mot recherché figure
|
||
très souvent, et qu'une série de lignes se mettent à défiler sur l'écran,
|
||
parce qu'elle n'ont pas la place d'y figurer toutes. Dans ce cas, vous pouvez
|
||
taper
|
||
</p>
|
||
<pre>grep machin * | less</pre>
|
||
<p>
|
||
Le <code>|</code> (<em> pipe</em> en anglais : tuyau) connecte la sortie
|
||
standard d'une commande (c'est-à-dire le résultat visible de cette
|
||
commmande) sur l'entrée standard d'une autre commande (ici
|
||
<code>less</code>); dans notre cas, cela signifie que les lignes produites
|
||
par <code>grep</code> pourront être lues avec <code>less</code>, comme un
|
||
fichier.
|
||
</p>
|
||
<p><strong>Lignes parasites</strong> : <code>grep</code> passe en revue tous
|
||
les répertoires et fichiers; quand on ne lui précise pas la nature du fichier
|
||
(<code>*</code> et non pas <code>*.tex</code>), il signale tous les
|
||
répertoires qu'il examine. Pour éliminer toutes ces lignes parasites, il faut
|
||
ajouter <code>2>/dev/null</code> à la fin de la ligne de commande
|
||
(<code>/dev/null</code> est une sorte de poubelle où on redirige les données
|
||
dont on veut se débarasser). Par exemple :
|
||
</p>
|
||
<pre>
|
||
grep coucou **/* 2>/dev/null
|
||
grep coucou **/* 2>/dev/null | less
|
||
</pre>
|
||
<p><em>Allez faire les <a href="exercices/grep.html">exercices sur grep et les
|
||
expressions régulières</a></em>.
|
||
</p>
|
||
<h2>
|
||
<a name="find" id="find">Trouver un fichier : <code>find</code></a>
|
||
</h2>
|
||
<p><strong><code>find <em>répertoire fichier</em></code></strong> sert à
|
||
retrouver un fichier selon certaines caractéristiques (nom, taille...).
|
||
L'option <code>-name</code> sert à indiquer le nom du fichier recherché :
|
||
</p>
|
||
<p>
|
||
<code>find <em>répertoire</em> -name <em> nom-du-fichier</em></code>
|
||
</p>
|
||
<p>
|
||
Le répertoire est <code>~</code> (tilde) quand on veut chercher dans tout son
|
||
compte, <code> .</code> (point) quand on veut chercher dans le répertoire
|
||
courant (et ses sous-répertoires).
|
||
</p>
|
||
<h4>Exemples :</h4>
|
||
<ol>
|
||
<li> Supposons que Toto cherche un fichier <code>egypte.tex</code> (qui se
|
||
trouve dans un répertoire <code>geo/</code>) :
|
||
<pre><span class="prompt">corvette ~ $</span> find ~ -name egypte.tex /users/97/litt/toto/geo/egypte.tex
|
||
</pre>
|
||
</li>
|
||
<li> Dans <code>~toto/histoire/moderne/documents/</code> il y a un fichier
|
||
appelé <code>chrono</code> et Toto se trouve dans
|
||
<code>histoire/</code> :
|
||
<pre><span class="prompt">corvette $</span> find . -name chrono ./moderne/documents/chrono
|
||
</pre>
|
||
</li>
|
||
</ol>
|
||
<p><strong>Si vous ne vous rappelez que d'une partie du nom du fichier</strong>,
|
||
on utilise les jokers (voir le cours du <em>Hublot</em> sur
|
||
<a href="../docs/hublot/hublot02.html#usage">Les jokers</a>,
|
||
numéro 2, décembre 1999). Reprenons le cas 1; Toto sait juste
|
||
qu'il y a «gypt» dans le nom du fichier; il fera ainsi sa demande :
|
||
</p>
|
||
<pre><span class="prompt">corvette ~ $</span> find ~ -name '*gypt*' /users/97/litt/toto/geo/egypte.tex
|
||
</pre>
|
||
<p>
|
||
« <code>*gypt*</code> » peut se comprendre comme « n'importe quoi avant
|
||
et après la suite de caractères « gypt ». Les <em>quotes</em>
|
||
(apostrophes) servent à garantir que les étoiles seront interprétées par
|
||
<code>find</code>, et non par le <a href="../jargon.html#shell">shell</a>.
|
||
</p>
|
||
<p><strong>Find est une
|
||
commande très puissante</strong>, qui permet de chercher un fichier non
|
||
seulement en fonction de son nom, mais aussi de son type, de sa date de
|
||
modification, de sa taille... Pour toutes ces options, voir les
|
||
<a href="exercices/find.html">exercices sur find</a>.
|
||
</p>
|
||
<div class="metainformation">
|
||
Auteur : Émilia Robin. Dernière modification : 2012-11-22 par Jachiet Louis.
|
||
</div>
|
||
</div>
|
||
</body>
|
||
</html>
|