Conversion de chercher.html.
This commit is contained in:
parent
8304f72fd0
commit
9ede737784
2 changed files with 233 additions and 1 deletions
1
00TODO
1
00TODO
|
@ -93,7 +93,6 @@ cours/images/xfig.html
|
|||
cours/index.html
|
||||
cours/rcs.html
|
||||
cours/unix/cercles.html
|
||||
cours/unix/chercher.html
|
||||
cours/unix/communiquer.html
|
||||
cours/unix/disquettes.html
|
||||
cours/unix/divers.html
|
||||
|
|
233
unix/chercher.tml
Normal file
233
unix/chercher.tml
Normal file
|
@ -0,0 +1,233 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!DOCTYPE html
|
||||
PUBLIC "-//ENS/Tuteurs//DTD TML 1//EN"
|
||||
"tuteurs://DTD/tml.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Chercher</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>Chercher des mots et des fichiers sous Unix</h1>
|
||||
|
||||
<h2><a name="grep">Chercher des mots : <code>grep</code> <em>mot fichiers</em></a></h2>
|
||||
|
||||
<h3>Syntaxe</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 coucou **/*.tex</code> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> Tous les fichiers du répertoire courant et de ses sous-répertoires </td>
|
||||
<td> <code>grep 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>Options de <code>grep</code></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>Confort</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">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="&url.tuteurs;docs/hublot/hublot02/hublot2.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="&url.jargon;#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 le 2002-11-16.
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in a new issue