shell : ln avec renommage

shell : ln avec renommage - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 14-03-2012 à 12:00:02    

Bonjour,
je cherche à faire un "ln" tout en changeant le nom du fichier de sortie.
 
Dans mon cas j'ai un dossier avec une centaine de fichier, et je souhaite faire un lien (ln) de chaque fichier dans un autre répertoire, et ajouter en même temps une chaine de caractère au début du nom du lien ainsi créé.
 
par exemple, le fichier "image 0223.jpg" deviendrait "Liste1 - image 0223.jpg"
 
J'arrive à faire le "ln", c'est pas trop compliqué ;)   mais je n'arrive pas à changer le nom en même temps, sachant qu'il y a parfois des espace dans mes fichiers.
 
Merci d'avance de votre grande aide.
 
Good time

Reply

Marsh Posté le 14-03-2012 à 12:00:02   

Reply

Marsh Posté le 14-03-2012 à 12:58:47    

man ln

Citation :

ln [OPTION]... [-T] TARGET LINK_NAME   (1st form)

 


Si tu as beaucoup de fichier, fais une boucle for en bash
pour le ln, tu mets des " " autour de ta variable si elle est succeptible de contenir des espace,


Message édité par o'gure le 14-03-2012 à 13:19:46
Reply

Marsh Posté le 14-03-2012 à 13:06:54    

Je connais la commande "ln" que je dois utiliser, mais je n'arrive pas à faire une boucle avec le changement de nom, notamment quand les fichiers ont des espaces: la boucle me découpe chaque segment :  
au lieu de "image 0223.jpg", j'ai "image" et "0223.jpg", d'où mon problème.
 
si je n'avais pas de changement de nom, je pourrais faire un simple :
 
ln * mondossier/

Reply

Marsh Posté le 14-03-2012 à 13:15:06    

good time a écrit :

Je connais la commande "ln" que je dois utiliser, mais je n'arrive pas à faire une boucle avec le changement de nom, notamment quand les fichiers ont des espaces: la boucle me découpe chaque segment :
au lieu de "image 0223.jpg", j'ai "image" et "0223.jpg", d'où mon problème.


Donne nous ta boucle qu'on la corrige
As tu essayé avec des guillemets comme je l'ai indiqué dans mon précédent post.

good time a écrit :


si je n'avais pas de changement de nom, je pourrais faire un simple :

 

ln * mondossier/


même sans changement de nom, chez moi  cela ne marche pas.
Les liens créés ne sont pas bon.

 

Par contre en allant dans le répertoire cible et en indiquant le bon path des fichiers, ça fonctionne
ln -s repertoiredesfichiers/* ./


Message édité par o'gure le 14-03-2012 à 13:16:41
Reply

Marsh Posté le 14-03-2012 à 14:40:52    

Au départ j'étais parti sur cette commande :  
 
for i in *; do ln $i ${i/old_name/new_name} ; done
 
Il y avait 2 problème avec cette commande : les espaces ne sont pas gérer, et je ne veux pas remplacer une partie du texte par une autre, mais ajouter au début.
 
Je suis ensuite partie sur cette commande :  
ls 1 . | awk '{print "ln "$1" texte_à_ajouter_"$1}' | sh
 
cette commande me rajoute donc du texte au début, c'est parfait, mais elle ne marche toujours pas si un fichier a un espace...
 

Reply

Marsh Posté le 14-03-2012 à 14:42:10    

Juste pour info, je cherche à créer des liens mais seulement depuis des fichiers. Jamais de dossiers.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed