Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1623 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Copié fichier depuis liste de nom.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Copié fichier depuis liste de nom.

n°1370712
Cetaubofix
Posté le 13-12-2014 à 17:12:08  profilanswer
 

Bonjour. Je voudrais savoir si avec linux il est possible de copié un meme fichier plusieurs fois dans un dossier avec un nom différent que j'ai dans une liste.
 
Je vais essayé de donné un exemple pour essayer d'etre plus claire.
 
J'ai un fichier x.txt qui contient ce texte

Code :
  1. a
  2. b
  3. c
  4. d
  5. e
  6. f


 
Un fichier mp3 qui sp'alle X.mp3
 
Comment copié le fichier X.mp3 avec les différents nom contenue dans le fichier x.txt pour avoir dans un dossier les fichiers suivant
a.mp3
b.mp3
c.mp3
d.mp3
e.mp3
f.mp3
 
Merci

mood
Publicité
Posté le 13-12-2014 à 17:12:08  profilanswer
 

n°1370713
Mjules
Modérateur
Parle dans le vide
Posté le 13-12-2014 à 17:30:10  profilanswer
 

en shell, avec une boucle du genre :
while read ligne; do cp X.mp3  $ligne.mp3; done < x.txt
 
http://www.commentcamarche.net/faq [...] -par-ligne


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
n°1370717
Cetaubofix
Posté le 13-12-2014 à 17:41:40  profilanswer
 

Merci pour ta réponse Mjules. Tu pourais stp essayé de m'aider un peux plus. Car je t'avoue que je n'y connais pas grand chose avec linux. On m'a juste dis que si je voulais faire ça, vaudrait mieux que je passe par linux, donc je l'ai installer dans une machine virtuel.  
 
J'ai essayer de tapper while read ligne; do cp X.mp3  $ligne.mp3; done < x.txt  dans la console d'ubuntu mais j'ai eu l'erreur suivante.
 

Code :
  1. cp: la cible « 0001\r.mp3 » n'est pas un répertoire
  2. cp: la cible « 0002\r.mp3 » n'est pas un répertoire
  3. cp: la cible « 0003\r.mp3 » n'est pas un répertoire
  4. cp: la cible « 0004\r.mp3 » n'est pas un répertoire


n°1370727
Profil sup​primé
Posté le 13-12-2014 à 23:17:53  answer
 

eh, ben... si "on" te dit de souder deux fils électriques pour allumer une ampoule, tu vas acheter un poste oxyacétylène ?
 
il faut chercher un peu !
"Windows lire fichier ligne par ligne"
 
Je n'utilise plus W$ depuis ~15 ans, et j'ai mis 5 mn pour trouver un code qui devrait fonctionner sur W$ :

Code :
  1. for /f "delims=" %%i in ('type fichier.txt') do cp %%i %%i.mp3

à peu près, parce que je n'ai pas de W$ pour tester.

n°1370733
Neji Hyuga
:grut:
Posté le 14-12-2014 à 10:53:23  profilanswer
 

Code :
  1. [neji@nightingale test]$ ls -1
  2. X.mp3
  3. x.txt


 

Code :
  1. for _file_ in $(cat x.txt)
  2. do
  3. cp X.mp3 ${_file_}.mp3
  4. done


 

Code :
  1. [neji@nightingale test]$ ls -1
  2. a.mp3
  3. b.mp3
  4. c.mp3
  5. d.mp3
  6. e.mp3
  7. f.mp3
  8. X.mp3
  9. x.txt


 
C'est juste ça que tu voulais faire ?
 
Sous Windows aussi ça se fait simplement:
 

Code :
  1. for /f %%X in (x.txt) do (
  2. copy X.mp3 %%X.mp3
  3. )


 


---------------
Le Topic Unique des collections de cartes graphiques - GPUCHAN.ORG
n°1371096
tilolebo
point trop n'en faut
Posté le 21-12-2014 à 02:04:15  profilanswer
 

Code :
  1. cat x.txt | xargs -I {} cp X.mp3 {}.mp3


---------------
Ravèt pa janmen ni rézon douvan poul
n°1371106
Profil sup​primé
Posté le 21-12-2014 à 12:23:08  answer
 

uuoc!

Code :
  1. xargs -I µ cp X.mp3 µ.mp3 <x.txt

n°1371107
bardiel
Debian powa !
Posté le 21-12-2014 à 13:01:09  profilanswer
 


Ok, Microsoft Windows c'est un "Linux et OS Alternatifs" :sarcastic:
Après par rapport au contexte, ça peut se faire aussi sur Windows, c'est probablement aussi pour apprendre à coder "qu'on" lui a dit de le faire sur Linux.

 

Après le code de MJules fonctionne chez moi, mais il faudrait voir le contenu de ton fichier "x.txt", et son format. Je soupçonne une erreur de lecture CR/LF...
Un petit

tr -d '\r' < x.txt > x_lin.txt


et utiliser x_lin.txt plutôt que x.txt pour le code (source du code : ici)


Message édité par bardiel le 21-12-2014 à 13:02:28

---------------
Grippe ? Coronavirus ? Portez votre masque correctement ! :D
n°1371109
Profil sup​primé
Posté le 21-12-2014 à 13:55:09  answer
 

Citation :

On m'a juste dis que si je voulais faire ça, vaudrait mieux que je passe par linux[...]

moi, j'entends : «Windows n'est pas capable de faire ça (simplement), vaudrait mieux [...] passe[r] par linux».
mais bon.
saura-t-on jamais ce qu'il en est réellement ? reverra-t-on Cetaubofix pour nous informer du succès de nos solutions ? ...
 

Code :
  1. tr -d '\r' <x.txt | xargs -I µ cp X.mp3 µ.mp3

et hop, plus de fichier temporaire !

n°1375817
tazbox
Posté le 19-04-2015 à 15:04:58  profilanswer
 

Salut.
 
Je cherche à faire la meme chose. J'ai essayé toutes vos commande et elles fonctionnent bien. Le seul probleme c'est qu'avant le . de l’extension j'ai un espace.
 
Par exemple au lieu d'avoir a.mp3 j'ai a .mp3
 
J'ai essayez les commandes suivante
 
 

Code :
  1. while read line ; do cp x.mp3 "${line}.mp3" ; done <x.txt


 

Code :
  1. xargs -I µ cp X.mp3 µ.mp3 <x.txt


 
Tous ca fonctionne bien, mais l'espace pause probleme.  
 
Sauriez vous d'ou cela vient ?  Ma liste est en fichier txt, j'ai essayé de changer le .txt en .csv, voir si le problème vient de la liste. Mais ca n'a rien changer.
 
 
 

mood
Publicité
Posté le 19-04-2015 à 15:04:58  profilanswer
 

n°1375842
Profil sup​primé
Posté le 19-04-2015 à 21:56:48  answer
 

salut,
 
comment as-tu récupéré cette liste de fichiers dans un fichier (x.txt) ?

n°1375859
netmonk
Posté le 20-04-2015 à 13:35:17  profilanswer
 

Ouvre ton fichier de nom dans vim et tape cette commande :  
":%s/ //g"  
Ensuite tu sauves (:wq) et tu relances ton script.

n°1375861
Profil sup​primé
Posté le 20-04-2015 à 13:45:19  answer
 

ouaip, comme ça tous les espaces seront supprimés, même ceux qui pourraient figurés dans le nom d'un fichier :(
il vaut mieux stipuler qu'on veut supprimer uniquement ceux qui figurent en fin de ligne !

Code :
  1. :%s/ \+$//

n°1375866
o'gure
Modérateur
Multi grognon de B_L
Posté le 20-04-2015 à 17:08:15  profilanswer
 

netmonk a écrit :

Ouvre ton fichier de nom dans vim et tape cette commande :  
":%s/ //g"  
Ensuite tu sauves (:wq) et tu relances ton script.


Sinon y a sed pour ça :o


---------------
Relax. Take a deep breath !
n°1375867
netmonk
Posté le 20-04-2015 à 19:43:57  profilanswer
 

Watael très juste ! :)  
 
O'gure ? There is more than one way to do it ! en Perl aussi, en awk, en tr, en python...
 
Pas la peine de voir rouge pour un gars qui a installé une ubuntu spécialement pour cette manip.  
(alors qu'il pouvait le faire en shell windows par ailleurs et comme précisé antérieurement)


Message édité par netmonk le 20-04-2015 à 19:45:39
n°1376027
blazkowicz
Posté le 24-04-2015 à 14:18:38  profilanswer
 

Il y a aussi cygwin pour avoir un shell "unix" sous Windows, et d'autres façons mais bon la VM sous linux ça se fait, vous me donnez l'impression qu'on est en 1997 et que c'est très choquant de gaspiller tous ces gigaoctets et tout ce CPU :lol:.
 
Pour les conversions de fichier entre format windows et unix, au lieu de faire ça à la main on peut aussi utiliser le programme "dos2unix".
 
Au lieu de faire une ligne à rallonge telle que

while read line ; do cp x.mp3 "${line}.mp3" ; done <x.txt

on peut essayer d'écrire ça dans un script :
 


#!/bin/bash
 
while read line ; do
            cp x.mp3 "${line}.mp3"
done  < fichier.txt


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Copié fichier depuis liste de nom.

 

Sujets relatifs
Owncloud: fichier .ocdata et changement de repertoire dataFaire une recherche sur un liste de noms de fichiers
Cherche logiciel de comparaison de fichier mode bloc - rdiff!Convertir un fichier PDF en document Word ?
Samba : impossible d'exécuter des fichiers distantsQuestion ssh pour débutant - copie de répertoire
[PDF] Edition de fichier PDF[résolu] Test de l'existance d'un fichier
[ Shell ] Transformation liste en tableau avec ..awk ?explorateur de fichier sous interface web
Plus de sujets relatifs à : Copié fichier depuis liste de nom.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR