Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 10/10/2019, à 21:44

domi301

[resolu] maudit par les blancs

Salut à tous

j'ai d'un coté de nombreux dossiers "nom prenom" dont une bonne partie contiennent hélas plusieurs espaces au milieu
(c'est pas moi qui les ait créés...)

et de l'autre coté un tas de fichiers en vrac que j'essaie de ranger en semi-auto dans les dossiers
(il y a trop d'homonymes et de conflits potentiel genre berg et lackberg pour le faire en full-auto...)

je fais une première passe pour identifier les fichiers vrac éligibles au transfert ou je teste pour chaque dossier existant si il y aurait des fichiers à ranger dedans
NB: la finasserie sur lt 3 c'est pour ignorer les "de ", "mc ", "la "...

for vdossier in ???*
do
  set $(echo $vdossier)
#  vnom = $(eval echo $1)
  vnom=$1
if [ ${#vnom} -lt 3 ]
then
  vnom=$2
fi
find "./a trier/" -type f -iname "*$vnom*" -exec echo {} ":" $vdossier ":" \; > verif.csv

je charge verif.csv dans libre office pour trier ceux qui me semblent coherent a ranger puis je fais un fichier script pour le rangement a partir de

 formule ="mv -b  """ & $'tri'.A1  & """ ""./" & $'trif'.B1 & "/""" 

et j'obtiens un résultat mv -b fichier ./dossier_cible/

ca fait le boulot grosso-modo SAUF pour les dossiers contenants plusieurs espaces ou j'obtiens des erreurs
mv: impossible de déplacer ... vers './McDermid Val/': N'est pas un dossier

effectivement le vrai dossier est "McDermid  Val"  avec 2 espaces...

prob 1
par quelle commande trouver et renommer les dossiers défectueux pour leur appliquer un trim et enlever les espaces excédentaires ?
j'arrive bien à les identifier par

find ./ -type d -maxdepth 1 -name "*  *" -print 

mais je coince sur la commande de renommage

prob 2
je ne comprends pas comment je perds les espaces du nom d'origine
je présume que ca à un lien avec le set $(echo $vdossier)
mais comment faire autrement ??

Dernière modification par domi301 (Le 16/10/2019, à 21:45)


Lubuntu / Xubuntu-Voyager ==> redonner vie à des machines abandonnées
en cas de besoin => http://forum.ubuntu-fr.org/viewtopic.php?id=1069631

Hors ligne

#2 Le 11/10/2019, à 00:23

kamaris

Re : [resolu] maudit par les blancs

Bon, je n'ai pas tout saisi à ce stade de la mécanique passant du premier script à libreoffice, puis de libreoffice au second script, mais concernant les espaces, je pense que ton problème vient de

find "./a trier/" -type f -iname "*$vnom*" -exec echo {} ":" $vdossier ":" \; > verif.csv

à remplacer par

find "./a trier/" -type f -iname "*$vnom*" -exec echo {} ": $vdossier :" \; > verif.csv

c'est à dire qu'il faut inclure la variable $vdossier dans les guillemets.

Tu peux par ailleurs remplacer

set $(echo $vdossier)

par

set $vdossier

Hors ligne

#3 Le 11/10/2019, à 18:03

LeoMajor

Re : [resolu] maudit par les blancs

bonjour,

solution karcher
detox, inline-detox: paquet detox

~$ inline-detox <<<"éèçà@)(pierre martin+[123]"
eeca-pierre_martin+-123-

~$ touch /tmp/"éèçà@)(pierre martin+[123]"
~$ ls /tmp/éèçà@\)\(pierre\ martin+\[123\] 
/tmp/éèçà@)(pierre martin+[123]

~$ detox /tmp/éèçà@\)\(pierre\ martin+\[123\] 
~$ ls /tmp/eeca-pierre_martin+-123- 
/tmp/eeca-pierre_martin+-123-

Hors ligne

#4 Le 11/10/2019, à 22:44

domi301

Re : [resolu] maudit par les blancs

merci à vous

@LeoMajor, sympa le detox par rapport à des empilements de SED, je garde

@kamaris, le soucis venait bien du printf et des "

pour expliquer les 2 etapes je peux avoir de multiples combinaisons d'un même nom avec plusieurs prenoms ou d'un prenom qui sert de nom à d'autres...
d'ou l'obligation de passer par une étape manuelle pour valider les bonnes cibles de tri.
c'est les "survivants" que je traite ensuite par les mv  (qq centaines quand même...)

exp pour un jeu d'essai de dossiers cibles potentielles

$ ll
drwxrwxr-x 2 phocas phocas  4096 oct.  11 22:05 'aaa  2bl'/
drwxrwxr-x 2 phocas phocas  4096 oct.  11 22:11  atrier/
drwxrwxr-x 2 phocas phocas  4096 oct.  11 22:13 'autre ccc'/
drwxrwxr-x 2 phocas phocas  4096 oct.  11 22:05 'bbb 1bl'/
drwxrwxr-x 2 phocas phocas  4096 oct.  11 22:12 'bbb 2eme'/
drwxrwxr-x 2 phocas phocas  4096 oct.  11 22:05 'ccc   3bl'/ 

c'est bien mon ancien find qui perd les espaces -exec echo {} ":" $vdossier ":" ${#vnom} \;

./atrier/machin aaa : aaa 2bl : 3
./atrier/bbb truc : bbb 1bl : 3
./atrier/bbb truc : bbb 2eme : 3
./atrier/et.ccc-hop : ccc 3bl : 3
  

mais le find de Kamaris lui conserve bien l'intégralité des noms de dossier avec -exec echo {} ":$vdossier:" ${#vnom} \;

./atrier/machin aaa :aaa  2bl: 3
./atrier/bbb truc :bbb 1bl: 3
./atrier/bbb truc :bbb 2eme: 3
./atrier/et.ccc-hop :ccc   3bl: 3
   

j'ai donc une solution mais je ne comprends pas trop pourquoi. Le man de echo ne parle pas d'un retraitement des espaces

c'est bien l'encapsulation entre " " qui sauve les espaces mais j'aimerai bien comprendre le pourquoi...

echo $vdossier "::$vdossier"
ccc 3bl ::ccc   3bl  

Lubuntu / Xubuntu-Voyager ==> redonner vie à des machines abandonnées
en cas de besoin => http://forum.ubuntu-fr.org/viewtopic.php?id=1069631

Hors ligne

#5 Le 11/10/2019, à 23:04

Watael

Re : [resolu] maudit par les blancs

c'est lié au Découpage en mots
voir:

man -P "less -p '^\s+Word Splitting'" bash

Dernière modification par Watael (Le 11/10/2019, à 23:04)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#6 Le 11/10/2019, à 23:31

kamaris

Re : [resolu] maudit par les blancs

Oui, le shell opère sur le contenu des variables avant de passer le résultat à echo (ou à toute autre commande).
Tu peux t'en convaincre en utilisant la commande set -x, qui va te montrer ce qui est effectivement passé à echo quand tu fais echo $var ou echo "$var".
Il y a une description de ce comportement que j'aime bien dans le wiki de shellcheck : https://github.com/koalaman/shellcheck/wiki/SC2086
Je t'invite d'ailleurs à découvrir ce programme si tu ne le connais pas, et à lui passer ton script pour voir un peu ce qu'il a à t'apprendre smile

Hors ligne

#7 Le 16/10/2019, à 21:46

domi301

Re : [resolu] maudit par les blancs

merci, je me suis couché moins bête...


Lubuntu / Xubuntu-Voyager ==> redonner vie à des machines abandonnées
en cas de besoin => http://forum.ubuntu-fr.org/viewtopic.php?id=1069631

Hors ligne