J'aimerais créer des répertoires à partir des noms de fichier qui sont composés. Le soucis c'est que je n'arrive à garder l'antislah dans le script, pour faire mkdir mot1\ mot2
Voici les commandes que j'emploie :
ls -d *.mp3 | awk -F"-" '{print $1}' | sed 's/ /\\ /g' > file.txt
while read i ; do mkdir $i ; done ; < file.txt
Le mkdir crée un répertoire pour chaque mots rencontré. Ce n'est évidement pas ce que je veux
Merci de votre aide
# Guillemets
Posté par Vincent ORDY . Évalué à 8.
while read i ; do mkdir "$i" ; done
# on peut toujours faire plus de détours
Posté par NBaH . Évalué à 2.
ls -d *.mp3 | awk -F"-" '{print $1}' | sed 's/ /\\ /g' > file.txt
Tu veux pas ajouter un grep pour faire exactement ce qu'il ne faut pas faire ?
et puis, traiter la sortie d'un ls est rarement pertinent.
On pourrait utiliser find :
find . -maxdepth 1 -type d -iname "*.mp3" -exec mkdir '{}' \;
ou bash :
for item in *.mp3; do
[ -d "$item" ] && mkdir "$item"
done
[^] # Re: on peut toujours faire plus de détours
Posté par dubis . Évalué à 1.
D'après certains sites, il n'était pas conseillé d'utiliser la boucle for mais la boucle while ....
En tout cas merci pour vos réponses....
[^] # Re: on peut toujours faire plus de détours
Posté par Nerdiland de Fesseps . Évalué à 1.
[^] # On trouve tout et n'importe quoi sur le net.
Posté par NBaH . Évalué à 2.
Faut voir le contexte...je veux bien des références...
$ mkdir monRep
... pas de problèmes avec les espaces dans les noms de fichiers !$ touch monRep/test{,\ }file1
$ \ls -1 monRep
filetest
file test1
$ for i in monRep/*; do echo "$i"; done
monRep/testfile1
monRep/test file1
--
"certains sites" sont rédigées par des débutants en shell, en guise d'aide mémoire, et propagent des erreurs qu'ils ont trouvés sur des sites similaires, ou anciens, ou qu'ils ont mal interprété.
Sur ces sites, on peut, en général, lire des horreurs telles que
cat monFichier | grep expr
et autres joyeux uuoc.Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.