[gull] truc et astuce: conversion utf-8

Félix Hauri felix at f-hauri.ch
Sun Oct 16 20:49:43 CEST 2005


On Sun, Oct 16, 2005 at 05:57:32PM +0200, Anne Possoz wrote:
> Salut,
> 
> J'ai trouvé un magnifique petit programme fdate.c[1], qui permet de
> connaître la date de dernière modification d'un fichier dans un format
> compréhensible par "touch". Tout ce qu'il me fallait pour pouvoir
> utiliser find (dont je suis accro).

Pourquoi n'utilises-tu pas ``touch -r {} {}.utf-8zzz'' ?

> find . -type f -name \*\.RCX -exec sh -c \
>   'iconv -f ISO-8859-1 -t utf-8 {} -o {}.utf-8ZZZ \
>   && touch -t `fdate -t {}` {}.utf-8ZZZ \
>   && rename .utf-8ZZZ "" {}.utf-8ZZZ' \; -ls

Mais find le fait aussi:
   ``touch -t $(find {} -printf "%Tc") {}.utf-8foo''

Même, avec rename, tu vas chercher loin, pkoi pas simplement
   ``mv {}.utf-8abc {}'' ?
(rename est une commande très lourde, elle permet de renommer d'un
coup tous plusieur fichiers, utilisée pour un seul fichier, elle alourdi
considérablenent l'ensemble.)

Tu aurrais pu plus simplement faire le rename sur l'ensemble
de ton répertoire en une seule fois.

Tu aurrais pu aussi:

find . -type f -name \*\.RCX -exec sh -c '
    rdate=$(find {} -printf "%Tc") &&
    iconv -f ISO-8859-1 -t utf-8 <{} |
        diff -c {} - | 
        patch -p0 &&
    touch -d "$rdate"' \;  -ls

Le procédé n'est pas le même, mais le résultat devrait être similaire...

    Attention !
!!! Oeuvrer sur des répertoires contentant des copies de fichier,   !!!
!!! les commandes présentées peuvent détruire totalement le contenu !!!
!!! d'un répertoire !!! 
Particulierement sur 
  MoDiFy $file | diff -c $file - | patch -p0
Une faute de frappe fait des fichiers vides...

-- 
 Félix Hauri  -  <felix at f-hauri.ch>  -  http://www.f-hauri.ch



More information about the gull mailing list