<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://lea-linux.org/docs/index.php?action=history&amp;feed=atom&amp;title=Trucs%3ATravailler_sur_un_ensemble_de_fichiers</id>
	<title>Trucs:Travailler sur un ensemble de fichiers - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://lea-linux.org/docs/index.php?action=history&amp;feed=atom&amp;title=Trucs%3ATravailler_sur_un_ensemble_de_fichiers"/>
	<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Trucs:Travailler_sur_un_ensemble_de_fichiers&amp;action=history"/>
	<updated>2026-05-16T12:19:57Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Trucs:Travailler_sur_un_ensemble_de_fichiers&amp;diff=5841&amp;oldid=prev</id>
		<title>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Trucs:Travailler_sur_un_ensemble_de_fichiers&amp;diff=5841&amp;oldid=prev"/>
		<updated>2005-10-05T15:50:21Z</updated>

		<summary type="html">&lt;p&gt;conversion de la documentation originale de Léa par HTML::WikiConverter&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;Jice&amp;lt;jice chez lea-linux point org&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Remarque&amp;lt;/u&amp;gt; : les commandes qui suivent sont à taper sur une seule ligne de commande. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Comment rechercher dans &amp;lt;tt&amp;gt;/home/jice&amp;lt;/tt&amp;gt; (par exemple) tous les fichiers plus récents qu&amp;#039;une date donnée ?&amp;#039;&amp;#039;&amp;#039;&amp;lt;br /&amp;gt;Créez un fichier temporaire (on l&amp;#039;effacera par la suite) à la bonne date par : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;touch -t 199912251615 fichier.tmp&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;(cela crée le fichier &amp;lt;tt&amp;gt;fichier.tmp&amp;lt;/tt&amp;gt;, avec comme date de dernière modif le 25/12/1999 à 16h15). &amp;lt;br /&amp;gt;Ensuite, tapez : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;find /home/jice -newer fichier.tmp -print&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;pour en afficher la liste (voir &amp;lt;tt&amp;gt;man find&amp;lt;/tt&amp;gt; pour les autres options de find). &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Comment travailler (copier, renommer, etc.) sur des fichiers de façon globale ?&amp;#039;&amp;#039;&amp;#039;&amp;lt;br /&amp;gt;C&amp;#039;est en même temps moins simple que sous DOS (où un simple &amp;quot;&amp;lt;tt&amp;gt;ren *.htm *.php3&amp;lt;/tt&amp;gt;&amp;quot; suffit, mais beaucoup plus puissant car cela permet de faire des choses totalement innaccessibles avec DOS). &amp;lt;br /&amp;gt;La syntaxe générale est assez simple à se souvenir, car la structure de la commande est toujours la même : &amp;lt;br /&amp;gt;on utilise soit une boucle &amp;lt;tt&amp;gt;for&amp;lt;/tt&amp;gt; (pour un travail cantonné au même répertoire) soit la commande &amp;lt;tt&amp;gt;find&amp;lt;/tt&amp;gt; (pour un travail récursif sur les sous-répertoires), puis on exécute la commande voulue sur chaque fichier. &amp;lt;br /&amp;gt;&amp;lt;u&amp;gt;Par exemple&amp;lt;/u&amp;gt;, pour renommer tous les fichiers &amp;lt;tt&amp;gt;.htm&amp;lt;/tt&amp;gt; en &amp;lt;tt&amp;gt;.php3&amp;lt;/tt&amp;gt;&amp;lt;nowiki&amp;gt;: &amp;lt;/nowiki&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;#039;&amp;#039;&amp;#039;for&amp;#039;&amp;#039;&amp;#039; i in *.htm; do &amp;#039;&amp;#039;&amp;#039;mv&amp;#039;&amp;#039;&amp;#039; $i `echo $i | &amp;#039;&amp;#039;&amp;#039;sed&amp;#039;&amp;#039;&amp;#039; &amp;quot;/&amp;#039;&amp;#039;&amp;#039;.htm&amp;#039;&amp;#039;&amp;#039;/s//&amp;#039;&amp;#039;&amp;#039;.php3&amp;#039;&amp;#039;&amp;#039;/&amp;quot;`; done&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;ou &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;#039;&amp;#039;&amp;#039;find&amp;#039;&amp;#039;&amp;#039; . -name &amp;quot;*.htm&amp;quot; -exec &amp;#039;&amp;#039;&amp;#039;mv&amp;#039;&amp;#039;&amp;#039; {} `echo {} | &amp;#039;&amp;#039;&amp;#039;sed&amp;#039;&amp;#039;&amp;#039; &amp;quot;/&amp;#039;&amp;#039;&amp;#039;.htm&amp;#039;&amp;#039;&amp;#039;/s//&amp;#039;&amp;#039;&amp;#039;.php3&amp;#039;&amp;#039;&amp;#039;/&amp;quot;` \;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;u&amp;gt;Equivalent DOS&amp;lt;/u&amp;gt; : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;ren *.htm *.php3&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Explications&amp;lt;/u&amp;gt; : &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;for&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; : la boucle &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;for&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; va positionner successivement la valeur de la variable &amp;lt;tt&amp;gt;$i&amp;lt;/tt&amp;gt; au nom de tous les fichiers &amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;*.htm&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;, puis pour chaque valeur de &amp;lt;tt&amp;gt;$i&amp;lt;/tt&amp;gt;, exécuter la commande &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;mv&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;move&amp;#039;&amp;#039;, pour déplacer et/ou renommer) du fichier &amp;lt;tt&amp;gt;$i&amp;lt;/tt&amp;gt; (la variable de la boucle for) vers la transformation de $i. Ici, on remplace &amp;lt;tt&amp;gt;.htm&amp;lt;/tt&amp;gt; par &amp;lt;tt&amp;gt;.php3&amp;lt;/tt&amp;gt; avec la commande &amp;lt;tt&amp;gt;sed&amp;lt;/tt&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;lt;tt&amp;gt;find&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;&amp;#039; : on exécute la même commande ; &amp;lt;tt&amp;gt;find&amp;lt;/tt&amp;gt; exécute pour chaque fichier la ligne de commande présente après &amp;lt;tt&amp;gt;-exec&amp;lt;/tt&amp;gt; (qui doit se terminer par &amp;lt;tt&amp;gt;\;&amp;lt;/tt&amp;gt;) et remplace toute occurence de &amp;lt;tt&amp;gt;{}&amp;lt;/tt&amp;gt; dans cette ligne de commande le nom du fichier trouvé.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;#039;&amp;#039;&amp;#039;De même, pour renommer tous les fichiers commençant par &amp;quot;toto&amp;quot; en fichiers commençant par &amp;quot;titi&amp;quot; :&amp;#039;&amp;#039;&amp;#039;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;#039;&amp;#039;&amp;#039;for&amp;#039;&amp;#039;&amp;#039; i in toto*; do &amp;#039;&amp;#039;&amp;#039;mv&amp;#039;&amp;#039;&amp;#039; $i `echo $i | &amp;#039;&amp;#039;&amp;#039;sed&amp;#039;&amp;#039;&amp;#039; &amp;quot;/^toto/s//titi/&amp;quot;`; done&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;(&amp;lt;tt&amp;gt;ren toto*.* titi*.*&amp;lt;/tt&amp;gt; en DOS) &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Pour changer le &amp;quot;toto&amp;quot; présent dans le nom des fichiers en &amp;quot;titi&amp;quot;, où qu&amp;#039;il se trouve (début, fin, ou milieu) :&amp;#039;&amp;#039;&amp;#039;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;#039;&amp;#039;&amp;#039;for&amp;#039;&amp;#039;&amp;#039; i in *toto*; do &amp;#039;&amp;#039;&amp;#039;mv&amp;#039;&amp;#039;&amp;#039; $i `echo $i | &amp;#039;&amp;#039;&amp;#039;sed&amp;#039;&amp;#039;&amp;#039; &amp;quot;/toto/s//titi/&amp;quot;`; done&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;(pas d&amp;#039;équivalent en DOS)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Pour copier tous les fichiers finissant par &amp;lt;tt&amp;gt;.htm&amp;lt;/tt&amp;gt; ou &amp;lt;tt&amp;gt;.html&amp;lt;/tt&amp;gt; vers le même nom auquel on ajoute &amp;lt;tt&amp;gt;.bak&amp;lt;/tt&amp;gt; :&amp;#039;&amp;#039;&amp;#039;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;#039;&amp;#039;&amp;#039;for&amp;#039;&amp;#039;&amp;#039; i in *.htm*; do &amp;#039;&amp;#039;&amp;#039;cp&amp;#039;&amp;#039;&amp;#039; $i $i.bak; done&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;la même chose, mais récursivement sur tous les répertoires : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;#039;&amp;#039;&amp;#039;find&amp;#039;&amp;#039;&amp;#039; . -name &amp;quot;*.htm*&amp;quot; -exec &amp;#039;&amp;#039;&amp;#039;cp&amp;#039;&amp;#039;&amp;#039; {} {}.bak \;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;(pas d&amp;#039;équivalent en DOS) &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bref, la structure qui modifie le nom du fichier est globalement toujours la même : &amp;quot;&amp;lt;tt&amp;gt;commande $i `echo $i | commande_qui_transforme_$i`&amp;lt;/tt&amp;gt;&amp;quot; (pour modifier la valeur de &amp;lt;tt&amp;gt;$i&amp;lt;/tt&amp;gt;, voir les pages de man de sed, tr...), ou &amp;quot;&amp;lt;tt&amp;gt;commande $i append$iprepend&amp;lt;/tt&amp;gt;&amp;quot; (pour ajouter avant et/ou après &amp;lt;tt&amp;gt;$i&amp;lt;/tt&amp;gt;). Voir également ci-dessous : &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Comment renommer automatiquement des fichiers de manière à remplacer les espaces par des underscores, et supprimer les accents en conservant les majuscules ?&amp;#039;&amp;#039;&amp;#039;&amp;lt;br /&amp;gt;Tapez sur une seule ligne de commande : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;#039;&amp;#039;&amp;#039;for&amp;#039;&amp;#039;&amp;#039; i in * ; do &amp;#039;&amp;#039;&amp;#039;mv&amp;#039;&amp;#039;&amp;#039; &amp;quot;$i&amp;quot; `echo $i | &amp;#039;&amp;#039;&amp;#039;tr&amp;#039;&amp;#039;&amp;#039; &amp;quot;àçéèêëîïôöùüÂÇÉÈÊËÎÏÔÖÙÜ &amp;quot; &amp;quot;aceeeeiioouuACEEEEIIOOUU_&amp;quot;` ; done&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;(merci à Charles Goyard pour ses remarques) &amp;lt;br /&amp;gt;Un bon exercice peut être de trouver comment faire la même chose mais sur les fichiers du répertoire et de ses sous-répertoires (utilisez find !) &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Comment effacer tous les fichier *.tmp dans un répertoire et ses sous-répertoires ?&amp;#039;&amp;#039;&amp;#039;&amp;lt;br /&amp;gt;Nous allons utiliser find : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;#039;&amp;#039;&amp;#039;find&amp;#039;&amp;#039;&amp;#039; . -name &amp;quot;*.tmp&amp;quot; -exec &amp;#039;&amp;#039;&amp;#039;rm&amp;#039;&amp;#039;&amp;#039; -f {} \;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;(les accolades &amp;lt;tt&amp;gt;{}&amp;lt;/tt&amp;gt; sont remplacées par le nom du fichier en&lt;br /&gt;
[[Catégorie:Trucs_Shell]]&lt;/div&gt;</summary>
		<author><name>PingouinMigrateur</name></author>
	</entry>
</feed>