Forum Programmation.shell Noms de fichiers avec espaces, je craaaaque

Posté par  .
Étiquettes : aucune
1
30
déc.
2008
Problème hyper classique et je ne m'en sort pas. Je crois que j'ai besoin de vacances :-(

J'ai une copie de fichiers à faire avec scp. Pour les tests je fais avec mv et des fichiers bidons, ça fonctionne. Mais avec scp rien à faire.


touch "a"
touch "b"
touch "c"
touch "d e"
touch " f g"
touch "h i "
touch " j k "
# des espaces avant, après, dedans, un peu de tout



Deux contraintes:
1 - je souhaite utiliser les filtres classiques. tail dans mon cas. Je dois copier seulement les 4 derniers fichiers (le nom des vrais fichiers commence par une date donc ce sont les 4 plus récent).
2 - je souhaite lancer scp une seule fois, donc pas de boucle for.



echo $(ls --quoting-style=shell /chemin/* | tail -n 4) | xargs -i scp {} "loin-des-yeux:/loin-du-coeur"

Ca marche pas. scp voit tous les noms de fichiers comme un seul et unique paramètre. Alors qu'avec mv ça marche.



scp $(ls --quoting-style=shell /chemin/* | tail -n 4) "loin-des-yeux:/loin-du-coeur"

Ca marche pas non plus car les fichiers avec des espaces sont vus comme plusieurs noms. Si je mets $(xxx) entre guillements ça ne marche pas.


Je tourne en rond depuis 2 heures (j'embauche à 7h30 arghh). Je ne vais pas tarder à agresser mes collègues tellement ça m'énerve de ne pas trouver. J'ai déjà affuté mon crayon de papier.


Je sais d'avance que la réponse va être tellement simple que ça va m'agacer de ne pas avoir trouvé, mais désolé pour mon égo, je demande l'aide d'une âme généreuse pour me dépatouiller de ce problème.

Une petite idée svp ?
Pitié pour mes collègues :-)
  • # Reste zen

    Posté par  . Évalué à 4.

    Ca va te vexer mais c'est ton echo qui ne va pas. Tu t'es compliqué la vie :-)


    ls | tail -n 4 | xargs -i scp {} "loin-des-yeux:/loin-du-coeur"
    • [^] # Re: Reste zen

      Posté par  . Évalué à 2.

      La simplicité de la réponse est pire que ce que j'imaginais :-)
      J'ai testé, ça marche du premier coup comme d'hab.
      Le echo a été ajouté après quelques essais et je n'ai ensuite pas pensé à l'enlever. Des vacances, vite.

      Encore une fois merci Kerro, ça fait pas mal de fois que tu me dépannes MAIS POURQUOI TU REPONDAIS PAS AU TELEPHONE CE MATIN ?!! BWAAAAAA (le prends pas mal c'est de l'humour et tu notes que je n'ai pas appelé chez toi mais uniquement sur ton tél pro on n'est pas des boeufs).
      J'ai retouvé le sourire en tous cas, merci :-)

      J'ai maintenant une question qui fait suite: je préfère xargs car il est très puissant, mais si je souhaite faire fonctionner ça avec la seconde méthode (avec le $(xxx) dedans), comment faire ?

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.