Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Créer des dossiers à partir du contenu d'un fichier texte

36 réponses
Avatar
iDan
Bonjour,

Existe-t-il un utilitaire permettant de générer un ensemble de dossiers
à partir d'une liste de noms se trouvant dans un fichier texte (un nom
par ligne) ?

Merci
Daniel

10 réponses

1 2 3 4
Avatar
Patrick Stadelmann
In article <4cfaec4e$0$24166$c3e8da3$,
iDan wrote:

Je viens de voir le script applescript de Patrick S. dans une autre
enfilade pour la création de dossiers (mais à partir de noms de
fichiers et non à partir du contenu d'un fichier texte). Je vais
regarder ça de plus près (ça ressemble à de l'hypercard).



En AppleScript, avec un fichier encodé en UTF-16 ça donne :

set f to choose file
set d to choose folder

set ff to (open for access f)
set txt to read ff as Unicode text
close access ff

tell application "Finder"
repeat with n in paragraphs of txt
make new folder at d with properties {name:n}
end repeat
end tell

Si la ligne contient un nom de dossier valide, il devrait être géré
correctement. Seul la présence du caractère ':' qui est interdit va
poser problème.

Patrick
--
Patrick Stadelmann
Avatar
ludovic.cynomys
iDan wrote:

Je vais regarder ça de plus près (ça ressemble à de l'hypercard).



kof, kof...

--
Qu'est-ce qu'on fout là tous, dans ce petit coin d'Univers ?
Avatar
TK
Le 05/12/10 10:14, JiPaul a écrit :
Éric Lévénez wrote:

Alors :

for i in `cat fichiertexte' ; do mkdir -p -- "$i" ; done



Là Eric, tu me déçois :
- tu as copié la mauvaise apostrophe
- et même en la corrigeant, ça ne marche pas mieux



La commande suivante devrait faire l'affaire:

xargs -I% mkdir % < fichiertexte
Avatar
blanc
TK wrote:

La commande suivante devrait faire l'affaire:

xargs -I% mkdir % < fichiertexte



Effectivement, elle marche impec.
Et j'ajouterai que pour une bonne traduction des accents, il suffit que
le fichier texte soit en "UTF-8 no BOM".

Je précise ce dernier point :
- dans Textwrangler ouvrir le fichier texte ;
- s'il les accents ne sont pas OK dans le fichier,
utiliser la commande : File --> Reopen using encoding ...
jusqu'à ce qu'ils le soient ;
- si l'encodage obtenu (qui apparait en bas de la fenêtre) n'est pas
celui que j'ai dit, modifier le en utilisant le menu déroulant ;

Et j'ajoute que j'ai d'abord essayé avec "UTF-8" et j'ai alors des
caractères parasites sur le nom du premier dossier. C'est avec "no BOM"
que ces caractères disparaissent. Explications :
<http://fr.wikipedia.org/wiki/Marque_d'ordre_des_octets>


--
JiPaul.
/ /--/--// Jean-Paul Blanc
|/| L | quelquepart en (somewhere in)
/|| = ||| FRANCE
Avatar
blanc
TK wrote:

La commande suivante devrait faire l'affaire:

xargs -I% mkdir % < fichiertexte



Autre précision : en mettant dans un fichier script les deux lignes
suivantes :

#!/bin/zsh
xargs -I% mkdir % < $1

alors si le fichier script s'appelle : mkdoss
et si on la rendu exécutable par : chmod u+x mkdoss
alors on peut lancer le script par : mkdoss fichiertexte

--
JiPaul.
/ /--/--// Jean-Paul Blanc
|/| L | quelquepart en (somewhere in)
/|| = ||| FRANCE
Avatar
blanc
TK wrote:

La commande suivante devrait faire l'affaire:

xargs -I% mkdir % < fichiertexte



Autre précision : en mettant dans un fichier script les deux lignes
suivantes :

#!/bin/zsh
xargs -I% mkdir % < $1

alors si le fichier script s'appelle : mkdoss
et si on la rendu exécutable par : chmod u+x mkdoss
alors on peut exécuter la commande voulue par : mkdoss fichiertexte

--
JiPaul.
/ /--/--// Jean-Paul Blanc
|/| L | quelquepart en (somewhere in)
/|| = ||| FRANCE
Avatar
Patrick Stadelmann
In article <1jt1gz7.nsg4z1122fz02N%,
(JiPaul) wrote:

TK wrote:

> La commande suivante devrait faire l'affaire:
>
> xargs -I% mkdir % < fichiertexte

Effectivement, elle marche impec.



l'ue --> ne passe pas (xargs: unterminated quote)
l'eee et l'ue --> devient : leee et lue

Bref, c'est loin d'être "impec" !

Patrick
--
Patrick Stadelmann
Avatar
blanc
Patrick Stadelmann wrote:

l'ue --> ne passe pas (xargs: unterminated quote)
l'eee et l'ue --> devient : leee et lue

Bref, c'est loin d'être "impec" !



Exact. Donc éviter les caractères ' " / dans le fichier texte.
--
JiPaul.
/ /--/--// Jean-Paul Blanc
|/| L | quelquepart en (somewhere in)
/|| = ||| FRANCE
Avatar
TK
Le 05/12/10 18:38, Patrick Stadelmann a écrit :
In article<1jt1gz7.nsg4z1122fz02N%,
(JiPaul) wrote:

TK wrote:

La commande suivante devrait faire l'affaire:

xargs -I% mkdir %< fichiertexte



Effectivement, elle marche impec.



l'ue --> ne passe pas (xargs: unterminated quote)
l'eee et l'ue --> devient : leee et lue

Bref, c'est loin d'être "impec" !

Patrick



C'est problème avec le shell, dès qu'on commence à jouer avec les quotes
ca devient compliqué. Il faut soit modifier fichiertexte pour protéger
les ' en les préfixant par , soit demander à sed de le faire:

sed "s/'/'/" fichiertexte | xargs -I% mkdir -- %
Avatar
Sinmian
Salut Patrick,

Solution élégante — même si un shell peut désormais le faire — dont je
dois avoir le code en archive quelque part... qui remonte à un moment,
sans doute où il n'y avait que la souris et le glisser/déposer sur nos
macs.

:-)

--
If I sit silently, I have sinned.
[Mohamed Mossadegh]
1 2 3 4