Renommer des dossiers à partir d'un csv, en AppleScript ou en Bash |
Bienvenue invité ( Connexion | Inscription )
Renommer des dossiers à partir d'un csv, en AppleScript ou en Bash |
13 Sep 2021, 18:28
Message
#1
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 391 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
|
|
|
13 Sep 2021, 19:14
Message
#2
|
|
Macbidouilleur d'Or ! Groupe : Modérateurs Messages : 19 648 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 14’’ 2021, M1 Pro, 16 Go/1 To – macOS 12.6 “Monterey” ¶ MacBook Pro 15’’ mi-2010 Core i5 2,53 GHz, 8 Go/SSD Samsung 860EVO 1 To – 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 ¶ 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… |
|
|
13 Sep 2021, 20:02
Message
#3
|
|
Terminaltor Moderating Machine Groupe : Admin Messages : 24 455 Inscrit : 25 Oct 2002 Lieu : Jeumont (59) 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
|
|
|
13 Sep 2021, 20:10
Message
#4
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 265 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 -------------------- iiMac 24 M1 16Go/1To 13.5.1
iMac 27 i5 3,1GHz 8Go/1To 10.11.6 / 10.6.8 iMac 20 C.Duo 2,6Ghz 8Go/350Go 10.6.8 / 10.11 Mini C.Duo 2,0Ghz 2Go/500Go 10.6.8 |
|
|
14 Sep 2021, 06:24
Message
#5
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 391 Inscrit : 2 Jun 2006 Membre no 62 332 |
Merci à vous deux, je reviens vers vous si j''ai des problèmes.
-------------------- MacBook Pro (15-inch, Late 2016), 2,9 GHz Intel Core i7, 16 Go 2133 MHz LPDDR3
|
|
|
15 Sep 2021, 13:57
Message
#6
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 391 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 didier -------------------- MacBook Pro (15-inch, Late 2016), 2,9 GHz Intel Core i7, 16 Go 2133 MHz LPDDR3
|
|
|
Nous sommes le : 10th November 2024 - 18:56 |