logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 26-02-2021 21:43:00

phil45190
Membre
Distrib. : debian testing
Noyau : 5.16.0.6-amd64
(G)UI : xfce
Inscription : 16-02-2017

resolu creer dossier depuis tableur

bonsoir à toutes et tous,
D'un coté un tableur qui regroupe notamment des titres de morceaux de musique.
J'aimerai créer autant de dossier que de titres de morceaux de musique.
Le faire à la main et un à un va être fastidieux.
Y-a-t-il une commande miracle permettant de traduire chaque case du tableur en dossier ?
merci
bonne soirrée

Dernière modification par phil45190 (26-05-2021 16:10:42)

Hors ligne

#2 26-02-2021 23:54:54

pytolux
Membre
Inscription : 15-12-2019

Re : resolu creer dossier depuis tableur

Hello

Si je devais faire ça de manière simple et sans passer par une macro :

EDIT : Je créerai un script bash (pour en apprendre plus sur un script bash :
https://debian-facile.org/doc:programma … shell-bash

Si j'ai bien compris tu as dans ton tableau une colonne avec tous les Titres des chansons.
L'idée est de créer "une commande" pour chaque titre qui va créer un dossier là où tu le souhaites.
On utilisera la commande mkdir (source :https://debian-facile.org/doc:systeme:mkdir)

1/  Préparation :
1.a Ajouter un "\" devant les espaces et les guillemets
Effectuer "rechercher - Remplacer" du caractère "\" par "\ " (on rajoute un \ avant l'espace)
Faire la même chose pour les guillemets
Cette étape est importante car les espaces et les guillemets ne seront pas reconnu si ils ne sont pas "échappés" (Pour en savoir plus : https://abs.traduc.org/abs-5.0-fr/ch05s02.html)

1.b Créer la base du script
Dans ton tableur je pars du principe que dans ta colonne A regroupe les titres des chansons.
On va effectuer une concaténation dans la colonne B pour la première ligne :
Puis tu dupliques cette formules pour l'ensemble des lignes (double clics sur le petit carré noir situé en bas et à droite de la cellule B2)

=CONCATENER ("mkdir ./";A2)



2 Création du Script bash
2.a Ouvre un éditeur de texte (mousepad, gedit...).
Enregistre le fichier avec l'extention .sh
Garde bien le chemin d'accès à ton fichier qui nous sera utile pour la suite.
Pour les besoins de mon explication, on va partir du principe que le fichier que je nommerai monscript.sh est enregistré dans le dossier où tu veux créer tes dossiers:

/home/pytolux/Musique/Chansons

2.b
La première ligne du fichier va contenir ce qu'on appel un shebang (définition : https://fr.wikipedia.org/wiki/Shebang )
Puis tu sélectionnes l'ensemble des lignes créées dans ton tableur (colonne b) pour les copier dans le fichier, en dessous du shebang :


#!/bin/bash
mkdir ./get\ luky
mkdir ./glory \box
mkdir ./je\ t'aime



2.c Tu enregistres le fichier

3 - Utilisation du script :
3.a Ouvre un terminal
3.b Positionnes toi dans le dossier où tu souhaites créer tes dossiers à l'aide de la commande cd (là où ton script est enregistré)

cd /home/pytolux/Musique/Chansons

3.c Puis tu lances ton fichiers script :

bash monscript.sh



Si les dossiers existes déjà le terminal de dira qu'il est impossible de créer le répertoire.

Dernière modification par pytolux (28-02-2021 01:16:14)

Hors ligne

#3 27-02-2021 08:25:02

smolski
quasi...modo
Lieu : AIN
Distrib. : backports (buster) 10
Noyau : Linux 4.19.0-8-amd64
(G)UI : gnome
Inscription : 21-10-2008

Re : resolu creer dossier depuis tableur

Salut pytolux,

Super ta solution, toutefois, nous sommes sur un site appelant les débutants et même grands débutants en informatique à participer pour utiliser le libre, il faudrait donc développer davantage ta solution afin qu'ils ne soient pas confondus par les termes utilisés.
Pour l'utilisation du tableur, mieux développer la procédure.

Puis faire point par point toutes les illustrations des commandes en entier et non juste avec des mots.

Amitié, Jojo smile

Dernière modification par smolski (27-02-2021 08:28:43)


saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#4 27-02-2021 09:20:36

anonyme-15
Invité

Re : resolu creer dossier depuis tableur

Je m'attendais à ce que quelqu'un d'autre le dise : la première étape me semble être d'enregistrer le tableur en csv (fichier texte brut avec tabulations ou , et guillemets éventuels ), à partir de là c'est beaucoup plus simple de trier les données et de faire un mkdir à partir de ce tri.

Je ne suis pas assez compétent pour écrire facilement la formule de tri, mais l'export en csv donne par exemple :

"Led zep","III",1970
"Trenet","Best of",2020
"Vissotski","Vol arrêté",1981

#5 27-02-2021 10:41:43

cyrille
CA Debian-Facile
Lieu : Nowhere
Distrib. : SID + FreeBSD. Stable sur serveurs.
(G)UI : Xfce/Openbox
Inscription : 21-06-2020
Site Web

Re : resolu creer dossier depuis tableur

Comment se présente ton tableur ?
L'idée d'exportation en csv en bien.
Faudrait savoir ensuite quel champs t'interessent pour la création des dossiers

L'idée à partir de ces quelques lignes .


1/ Exportation ods ou xls en csv
Soit un fichier récupéré après export : tableur.csv

"Led zep","III",1970
"Trenet","Best of",2020
"Vissotski","Vol arrêté",1981




2/ Lecture ligne par ligne du contenu du tableur

while read line;  do echo $line;  done < tableur.csv




3/ A chaque ligne du "parses" la variable via la commande cut et tu crées un dossier éponyme et tu en profites pour supprimer des éventuels guillements (tr)
Ici on ne prendra que le champs 1 (option -f1 de cut)
   

var=$(echo $line | cut -f1 -d "," | tr -d '"')

 
et tu crées le répertoire souhaité dans le dossier courant

mkdir "$var"



Ce qui assemblé donne le script suivant

#!/bash/sh

nomDuFihchierDuTableurCsv='tableur.csv'

while read line;
  do echo $line;
  var=$(echo $line | cut -f1 -d "," | tr -d '"')
  echo $var
  mkdir "$var"
  done < nomDuFihchierDuTableurCsv



Tu peaufines ensuite là où tu veux créer tes répertoires.

Dernière modification par cyrille (27-02-2021 10:49:28)


"Ils ne me comprennent point, je ne suis pas la bouche qu’il faut à ces oreilles."

Association Debian-Facile | Les cahiers du débutant | ISO Debian-FacilePage perso. sur #df

Hors ligne

#6 27-02-2021 10:49:46

David5647
Membre
Distrib. : Debian Sid
Noyau : 5.15.0-2-amd64
(G)UI : i3wm + des bouts de kde
Inscription : 27-08-2017

Re : resolu creer dossier depuis tableur

On peut s'amuser avec l'IFS et la fonction read

#!/bin/bash

### Parameters ###

FILE="titres.csv"
HEADERS="Artist,Album,Year"
SEPARATOR=","

### Script ###

OLDIFS=$IFS

IFS=$SEPARATOR # on met la "," comme séparateur de champs (Internal Field Separator)
while read ${HEADERS[@]}; do # on lit ligne par ligne et on crée successivement des variables prenant le nom des champs de la variable $HEADERS
    echo "Artist : $Artist"
    echo "Album : $Album"
    echo "Year : $Year"
    echo ""
done < $FILE # injecte le fichier à parcourir

IFS=$OLDIFS



./parse_csv.sh


Artist : "Led zep"
Album : "III"
Year : 1970

Artist : "Trenet"
Album : "Best of"
Year : 2020

Artist : "Vissotski"
Album : "Vol arrêté"
Year : 1981
 



edit: j'oublie toujours, mais il y a awk qui permet de faire pas mal de choses aussi:

awk -F ',' '{ print $2 }' titres.csv


III
"Best of"
"Vol arrêté"
 

Dernière modification par David5647 (27-02-2021 12:09:44)

Hors ligne

#7 28-02-2021 01:12:59

pytolux
Membre
Inscription : 15-12-2019

Re : resolu creer dossier depuis tableur

smolski a écrit :

Salut pytolux,

Super ta solution, toutefois, nous sommes sur un site appelant les débutants et même grands débutants en informatique à participer pour utiliser le libre, il faudrait donc développer davantage ta solution afin qu'ils ne soient pas confondus par les termes utilisés.
Pour l'utilisation du tableur, mieux développer la procédure.

Puis faire point par point toutes les illustrations des commandes en entier et non juste avec des mots.

Amitié, Jojo smile



Tu as raison : J'ai répondu rapidement car je n'avais pas le temps
Je m'abstiendrai de répondre la prochaine fois et le ferrai quand j'aurai le temps de détailler smile

J'ai complété bien que le script de Cyrille est le plus adapté.

Dernière modification par pytolux (28-02-2021 11:48:15)

Hors ligne

Pied de page des forums