IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Renommer des dossiers à partir d'un csv, en AppleScript ou en Bash
Options
m00n
posté 13 Sep 2021, 18:28
Message #1


Macbidouilleur de bronze !
**

Groupe : Membres
Messages : 385
Inscrit : 2 Jun 2006
Membre no 62 332



Hello,

jai besoin dun coup de main car je voudrais renommer des dossiers à partir de données dun fichier csv.

le fichier csv est comme ceci :

5a0efb17d6784366449ae282;Dupont;Catherine Dominique;05/10/1967
5a1d2ce9daf4133eb485b805;Calicis;Mégane Maude;02/01/1994
5a1d8e9235a52e3f016185fe;Bérant;Marlène Mireille;12/04/1987
5a1d78b59c05cc3ef8e88b2d;Canon;Etienne Marie;02/07/2003
...

Mes dossiers sont nommé 5a0efb17d6784366449ae282 et 5a1d2ce9daf4133eb485b805 etc.

Je voudrais donc remplacer 5a1d2ce9daf4133eb485b805 par le nom, le prénom et la date de naissance de la personne.

Comment faire ?


Merci de votre aide.

didier

Ce message a été modifié par m00n - 13 Sep 2021, 18:29.


--------------------
MacBook Pro (15-inch, Late 2016), 2,9 GHz Intel Core i7, 16 Go 2133 MHz LPDDR3
Go to the top of the page
 
+Quote Post
baron
posté 13 Sep 2021, 19:14
Message #2


Macbidouilleur d'Or !
*****

Groupe : Modérateurs
Messages : 16 663
Inscrit : 22 Jul 2004
Lieu : Louvain-la-Neuve (Gaule Gelbique)
Membre no 21 291



Note de la modération :
Je pense que tu auras de meilleures chances de réponse dans la section programmation que dans UNIX. Je déplace.


--------------------
MacBook Pro 15’’ mi-2010 Core i5 2,53 GHz, 4 Go/SSD Samsung 850EVO 500 Go – Mac OSX 10.6.8  Power Macintosh G3 beige de bureau, rev.1 @ 233MHz, 288 Mo/4Go – MacOS 9.1 — + carte PCI IDE/ATA Tempo 66 Acard 6260 avec HD interne Maxtor 80 Go + graveur interne CDRW/DVD LG GCC-4520B + tablette A4 Wacom UD-0608-A + LaCie ElectronBlueIV 19" + HP ScanJet 6100C   Routeur/modem ADSL Trendnet TW100-BRM504 > B-Box 3 + HP LaserJet 4000 N  
La recherche dans MacBidouille vous paraît obscure ? J'ai rédigé une proposition de FAQ. Le moteur logiciel a un peu changé depuis mais ça peut aider quand même.
Les corsaires mettent en berne…
Go to the top of the page
 
+Quote Post
schlum
posté 13 Sep 2021, 20:02
Message #3


Terminaltor
Moderating Machine
*****

Groupe : Admin
Messages : 24 376
Inscrit : 25 Oct 2002
Lieu : Sceaux (92)
Membre no 4 319



Mode bourrin :
Code
cat fichier.csv | while read -r line; do
hash=`echo $line | cut -d ";" -f1`
nom=`echo $line | cut -d ";" -f2`
prenom=`echo $line | cut -d ";" -f3`
date=`echo $line | cut -d ";" -f4 | sed 's/\//_/g'`
mv "$hash" "$nom - $prenom - $date"
done


[Edit] sed pour changer les '/' des dates…


--------------------
          I think therefore I Mac          
Go to the top of the page
 
+Quote Post
PBell
posté 13 Sep 2021, 20:10
Message #4


Adepte de Macbidouille
*

Groupe : Membres
Messages : 218
Inscrit : 7 Dec 2013
Lieu : Ile de France
Membre no 188 169



Bonsoir,
Voici un début de script en Applescript qui réponds à ton problème:

CODE
-- sélection du dossier dans lequel les dossiers sont à renommer
set Dossier_Parent to choose folder with prompt "Sélectionner le dossier contenant les dossiers à changer"
set S_Dossier to Dossier_Parent as string

-- sélection du fichier csv
set Fcsv to choose file with prompt "Sélectionner le fichier csv"

set FContent to read Fcsv
set mes_lignes to every paragraph of FContent
set AppleScript's text item delimiters to {";"} -- utiliser le; comme séparateur
repeat with une_ligne in mes_lignes
    set T to every text item of une_ligne
    if (count of text items of T) = 4 then -- c'est bien une ligne valide
        set F_Dossier to text item 1 of T
        set F_Nom to text item 2 of T
        set F_Prenom to text item 3 of T
        set F_Date to text item 4 of T
        tell application "Finder"
            try
                -- Vérifie si le dossier existe
                if not (exists folder (S_Dossier & F_Dossier)) then
                    display alert "Le dossier " & F_Dossier & " n'existe pas"
                else
                    set name of folder (S_Dossier & F_Dossier) to F_Nom & "_" & F_Prenom
                    -- ajouter la date après conversion
                end if
            end try
        end tell
    end if
end repeat


J'ai supposé que la première colonne du fichier csv ne contient que des noms de dossier et pas des chemins complets, et donc que ces dossiers se trouvent tous dans un seul dossier que tu dois sélectionner.
Par ailleurs ce script ne renomme qu'avec le nom et le prénom séparés par un "_".
Il ne reste que la date à transformer car les caractères / doivent être changés pour éviter les problèmes sous unix (les / signifient une arborescence de dossier !): par exemple à transformer en jj_mm_aaaa

A toi d'ajuster.

Cordialement


--------------------
iMac 27 i7 2,8GHz 8Go/1To 10.6.8 /10.10 / 10.11
iMac 20 C.Duo 2,6Ghz 8Go/350Go 10.6.8 / 10.11
Mini C.Duo 2,0Ghz 2Go/500Go 10.6.8
Go to the top of the page
 
+Quote Post
m00n
posté 14 Sep 2021, 06:24
Message #5


Macbidouilleur de bronze !
**

Groupe : Membres
Messages : 385
Inscrit : 2 Jun 2006
Membre no 62 332



Merci à vous deux, je reviens vers vous si j''ai des problèmes. wink.gif


--------------------
MacBook Pro (15-inch, Late 2016), 2,9 GHz Intel Core i7, 16 Go 2133 MHz LPDDR3
Go to the top of the page
 
+Quote Post
m00n
posté 15 Sep 2021, 13:57
Message #6


Macbidouilleur de bronze !
**

Groupe : Membres
Messages : 385
Inscrit : 2 Jun 2006
Membre no 62 332



Voilà ça a marché avec vos deux propositions mais avec deux différences notables :

schlum, ta proposition est considérablement plus rapide et de plus elle respecte les caractères accentués.
PBell, je préfère ta solution parce que c'est plus compréhensible pour moi. Par contre elle ne respecte pas les caractères accentués.

Encore mille merci à vous deux : il y avait + de 7000 dossiers à renommer tongue.gif

didier


--------------------
MacBook Pro (15-inch, Late 2016), 2,9 GHz Intel Core i7, 16 Go 2133 MHz LPDDR3
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 25th September 2021 - 03:37