• # probablement mais...

    Posté par  . Évalué à 1.

    tu dois pouvoir simplifier tes redirections

    cat mon_fichier | xargs ...

    sera plus lisible

    • [^] # Re: probablement mais...

      Posté par  . Évalué à 5.

      UUOC … On peut encore simplifier.

      xargs < monfichier command fonctionne.

      Contenu du fichier toto.txt:

      coucou hello c moi
      
      $ xargs < toto.txt echo
      coucou hello c moi
      
  • # erreur de ma part

    Posté par  . Évalué à 1.

    Je tiens juste à préciser que la formule:

    < MON FICHIER >
    

    signifiait n'importe quel fichier de mon hdd.

    • [^] # Re: erreur de ma part

      Posté par  . Évalué à 3. Dernière modification le 04 septembre 2019 à 22:59.

      En général on écrit plutôt [MON_FICHIER] ou même si ce n'est pas un usage parfait.

      Surtout pour du shell où < et > ont une signification, et < MON FICHIER > est justement valide (il faudrait MON_FICHIER ou 'MON FICHIER').

      • [^] # Re: erreur de ma part

        Posté par  . Évalué à 1.

        c'est entendu.
        Mon problème n'est toujours pas résolu.
        Je vais être plus précis.
        Je dispose de fichiers mp3 avec un surplus de caractères.
        J'enlève ce surplus de caractères et range l'ensemble des noms de mes fichiers tronqués dans MON_FICHIER.
        C'est à partir de là que je bug.
        comment faire pour passer au premier paramètre du mv de mon xargs les nom des fichiers dont je ne dispose que d'une partie tronquée.
        d'où le:

        {}*
        

        qui ne fonctionne pas.
        pourriez vous me venir en aide?

        • [^] # Re: erreur de ma part

          Posté par  (Mastodon) . Évalué à 3. Dernière modification le 05 septembre 2019 à 08:15.

          je pense avoir compris ton pb : tu as un fichier MONFICHIER qui contient des noms partiels de fichiers, et tu voudrais retrouver ces fichiers et les renommer.

          j'ai fait un essai vite fait et je pense que ceci fonctionne :

          cat MONFICHIER | xargs -I [] find MONPATH -name *[]* -exec cp {} /tmp/[].mp3 \;

          • tu fais travailler find pour trouver le fichier, puis avec -exec tu le traites
          • une astuce est d'utiliser un motif [] pour la recherche et {} pour le traitement sur le fichier trouvé
          • je me suis contenté de faire une copie dans /tmp avec le nouveau nom, je te laisse prendre les risques inhérants à un renommage massif :)

          En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

          • [^] # Re: erreur de ma part

            Posté par  . Évalué à 1.

            Merci gUI,
            Je suis arrivé à faire en partie ce que je voulais grâce à toi.
            Maintenant j'ai un problème de guillemets non-appairés.
            Les fichiers contenant des guillemets ne sont pas traités.
            Verrais tu une solution à mon problème ?

            • [^] # Re: erreur de ma part

              Posté par  . Évalué à 3.

              Les fichiers contenant des guillemets ne sont pas traités.

              faut supprimer les guillemets avant traitement

              au pif

              find -iname '*"*' -exec rename 's/"//g' {}\;

              dire à find de trouver tous les fichiers contenant un ", et faire le rename en supprimant le "

              • [^] # Re: erreur de ma part

                Posté par  . Évalué à 2.

                Merci NeoX,
                je viens enfin d'aboutir.
                Le sujet est maintenant résolu.
                Sur mon prochain post, je vous livrerai la page github de mon projet.
                Merci encore

Suivre le flux des commentaires

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