Vous n'êtes pas identifié(e).
, je me retrouve à l'écran avec ça :
Jusque là, pas de problème.
Mais quand je le met dans un fichier avec > monfichier.txt, comme ça :
Mon fichier monfichier.txt ressemble à ça :
Ma question est la suivante, comment garder les retours chariot ???
Merci par avance pour votre aide.
Orsam
Dernière modification par Orsam999 (04-04-2016 08:17:52)
Celui qui ne progresse pas chaque jour, recule chaque jour.
Confucius
Hors ligne
Hors ligne
Dernière modification par MicP (05-03-2016 09:31:52)
Hors ligne
saque eud dun (patois chtimi : fonce dedans)
Hors ligne
Celui qui ne progresse pas chaque jour, recule chaque jour.
Confucius
Hors ligne
Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.
Hors ligne
Avec ça, je récupère tous les noms de fichiers XML. Le seul problème, c'est que je n'ai plus les arborescences.
Mon fichier ressemble à ça :
ou avec
J'obtiens ça :
Mais je n'arrive pas à avoir les deux, l'arborescence et les fichier .xml (sans la taille des fichier ni horodatage) comme çà :
Une idée ??
Merci beaucoup
Orsam
Celui qui ne progresse pas chaque jour, recule chaque jour.
Confucius
Hors ligne
Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.
Hors ligne
Celui qui ne progresse pas chaque jour, recule chaque jour.
Confucius
Hors ligne
Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.
Hors ligne
J'essai maintenant de filtrer ce que je reçois avec smbclient :
echo "$(smbclient '//192.168.1.23/mesfilms/' -N -c 'recurse;prompt;cd mesfilms;ls')" | sed -n '/.xml/p' >liste_xml.txt
Quel est le format renvoyé par « smbclient '//192.168.1.23/mesfilms' -N -c 'recurse;prompt;cd mesfilms;ls' »
D'ailleurs je me demande si c'est la bonne façon de procéder. On voit que tu utilises deux fois « mesfilms », est-ce
nécessaire ?
Et en général, il est inutile de faire des commandes comme « echo "$(cmd; othercmd)" | anothercmd… » car
la commande « (cmd… ; othercmd… )|anothercmd… » fait la même chose… Pour commencer, je te propose
la simplification :
Ne serait-il pas plus efficace de monter ce répertoire et d'utiliser find qui lui conserve
le chemin des fichiers en entier ?
Si tu ne comprends pas ce que je raconte, n'hésite pas à poser des questions
Hors ligne
Quel est le format renvoyé par « smbclient '//192.168.1.23/mesfilms' -N -c 'recurse;prompt;cd mesfilms;ls' »
Voici ce que ça renvoi :
D'ailleurs je me demande si c'est la bonne façon de procéder. On voit que tu utilises deux fois « mesfilms », est-ce
nécessaire ?
Oui, //192.168.1.23/mesfilms/ correspond au nom du HDD (Il y en a plusieurs branché dessus) et le 'recurse;prompt;cd mesfilms;ls' indique le répertoire.
me permet de garder mes retours chariots
Ne serait-il pas plus efficace de monter ce répertoire et d'utiliser find qui lui conserve
le chemin des fichiers en entier ?
En faite, je ne voulais rien de compliqué !
J'ai réussi à faire ce que je voulais en PHP. J'aurais simplement aimé faire fonctionner la Sed avec les deux filtres '/.xml/p' et '/Films/p' cela me permettrait d’alléger un peu le traitement.
Pour résumer, j'aimerais que le fichier liste_xml.txt de la commande suivante ne récupère du smbclient que les lignes contenant ".xml" et "/Films":
J’espère avoir été clair dans mes explications.
Merci beaucoup.
Orsam
Dernière modification par Orsam999 (06-03-2016 05:51:51)
Celui qui ne progresse pas chaque jour, recule chaque jour.
Confucius
Hors ligne
qui, vu ton message #12, devrait donner ce que tu demandais dans ton message #7 :
=======
Je ne suis pas non plus arrivé à trouver la listes des options possibles de la commande ls (ou dir) de smbclient (je n'ai pas de samba installé chez moi)
et c'est bien dommage, car il existe peut-être une option de cette commande qui éviterait d'avoir à utiliser awk
Dernière modification par MicP (06-03-2016 07:23:15)
Hors ligne
Celui qui ne progresse pas chaque jour, recule chaque jour.
Confucius
Hors ligne
Il faudra mounter temporairement le système de fichiers de //192.168.1.23/mesfilms/ juste le temps de faire ce renommage depuis un système Linux,
ou créer un script batch à exécuter sur l'autre système.
=======
À tout hasard, essaye quand même comme ça :
la variable d'environnement $IFS (Internal Field Separator) est définie par défaut par une suite comprenant un espace, une tabulation et un retour à la ligne.
Mais là, pour awk, je l'ai redéfinie par seulement un caractère de tabulation.
(en espérant que c'est le caractère qui sépare les champs et qu'il n'a pas été remplacé par une suite d'espaces)
EDIT : Mais il y a plus simple avec awk :
Dernière modification par MicP (07-03-2016 00:40:47)
Hors ligne
En faite, je ne voulais rien de compliqué !
Justement, utiliser un « echo "$(cmd…)", c'est vraiment compliqué pour
rien. Aussi, utiliser le « ls » de smbclient ne simplifie pas la vie
non plus, car ça aplati toute l'arborescence et ça fourni des
informations sur la taille et l'horodotage qui te sont inutiles. Bien
au contraire, find permet d'avoir une liste de fichier en
conservant l'arborescence et sans les informations qui ne
t'intéressent pas.
Par exemple, si le point de montage de la machine distante est
/media/mesfilms/, le script suivant pourrait convenir :
Il faudra adapter en fonction de ce que renvoie find et du point de
montage, mais le principe est là. Je trouve cela bien plus simple que
la commande smbclient que tu utilises. Remarque, c'est peut être à
cause du fait que je n'utilise jamais samba et que je sais à peu près
me servir de find…
Évidemment, j'utilise deux lignes de commandes. On peut aussi écire
cela en une seule ligne mais ça complique le code ; je préfère montrer
un exemple où le principe est plus simple à comprendre.
D'ailleurs pour être vraiment rigoureux il ne faudrait pas l'écrire
ainsi, mais bon on va préserver la simplicité de l'exemple
Hors ligne