Script copie fichiers
Fermé
yankeekfp
Messages postés
6
Date d'inscription
vendredi 10 mai 2013
Statut
Membre
Dernière intervention
10 mai 2013
-
10 mai 2013 à 20:51
yankeekfp Messages postés 6 Date d'inscription vendredi 10 mai 2013 Statut Membre Dernière intervention 10 mai 2013 - 10 mai 2013 à 23:13
yankeekfp Messages postés 6 Date d'inscription vendredi 10 mai 2013 Statut Membre Dernière intervention 10 mai 2013 - 10 mai 2013 à 23:13
A voir également:
- Script copie fichiers
- Script vidéo youtube - Guide
- Copie cachée - Guide
- Copie écran samsung - Guide
- Super copie - Télécharger - Gestion de fichiers
- Wetransfer gratuit fichiers lourd - Guide
10 réponses
Salut,
man cp peut aider.
man cut
Et je pense que tu as tout ce qu'il faut si tu connais les bases (genre $1=premier argument, $2 le deuxième...)
N'hésite pas à donner plus de détails si tu veux plus d'explications.
man cp peut aider.
man cut
Et je pense que tu as tout ce qu'il faut si tu connais les bases (genre $1=premier argument, $2 le deuxième...)
N'hésite pas à donner plus de détails si tu veux plus d'explications.
yankeekfp
Messages postés
6
Date d'inscription
vendredi 10 mai 2013
Statut
Membre
Dernière intervention
10 mai 2013
10 mai 2013 à 21:06
10 mai 2013 à 21:06
Salut,
Le nombre d'argument ne doit pas être spécifié dans le script. L'utilisateur peut peut vouloir faire la copie de 12 fichiers dans différents répertoires. La copie se fera de manière récursive, c'est à dire dans tous les repertoires de destinations.
De plus, je me demande comment faire pour que le séparateur ":" soit pris en compte dans le script pour distinguer la partie à gauche correspond aux fichiers à copier et la partie de droite aux répertoires de destination.
Merci pour ton aide
Le nombre d'argument ne doit pas être spécifié dans le script. L'utilisateur peut peut vouloir faire la copie de 12 fichiers dans différents répertoires. La copie se fera de manière récursive, c'est à dire dans tous les repertoires de destinations.
De plus, je me demande comment faire pour que le séparateur ":" soit pris en compte dans le script pour distinguer la partie à gauche correspond aux fichiers à copier et la partie de droite aux répertoires de destination.
Merci pour ton aide
Juste une piste (c'est comme ça que je ferais)
En utilisant le ":" comme séparateur et en prenant tout ce qui va avant (man cut)
En utilisant le ":" comme séparateur et en prenant tout ce qui va après (man cut)
Ensuite j'utiliserais une commande sed pour remplacer les espaces (si ce sont des espaces qui séparent les fichiers) par des retours chariots dans les deux fichiers (man sed)
En suite je ferais un truc du genre
C'est peut-être pas le plus simple mais ça doit marcher
En utilisant le ":" comme séparateur et en prenant tout ce qui va avant (man cut)
cut [arguments] laListe > source.txt
En utilisant le ":" comme séparateur et en prenant tout ce qui va après (man cut)
cut [arguments] laListe > cible.txt
Ensuite j'utiliserais une commande sed pour remplacer les espaces (si ce sont des espaces qui séparent les fichiers) par des retours chariots dans les deux fichiers (man sed)
En suite je ferais un truc du genre
while read source do while read cible do cp -p ${source} ${cible} done<cible.txt done<source.txt
C'est peut-être pas le plus simple mais ça doit marcher
yankeekfp
Messages postés
6
Date d'inscription
vendredi 10 mai 2013
Statut
Membre
Dernière intervention
10 mai 2013
10 mai 2013 à 21:34
10 mai 2013 à 21:34
J'ai analysé la solution que je trouve très intéressante.
Si j'arrive à extraire la partie avant le ":" et celle après le ":". Est-ce qu'il ne serait pas plus simple de les affecter à une variable de type source="la partie avant" et destination="la partie après"?
Ensuite, une fois que c'est fait, j'ai juste besoin de faire cp -r $source $destination.
Qu'en penses-tu?
Si j'arrive à extraire la partie avant le ":" et celle après le ":". Est-ce qu'il ne serait pas plus simple de les affecter à une variable de type source="la partie avant" et destination="la partie après"?
Ensuite, une fois que c'est fait, j'ai juste besoin de faire cp -r $source $destination.
Qu'en penses-tu?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Sur le principe oui tu peux le mettre dans un variable...
Mais pour la suite je te suis pas trop, au-delà de deux arguments ton cp va te hurler dessus (s'il y a plusieurs fichiers/répertoires dans source et cible).
Le cp -r c'est plutôt pour copier les arborescences, pas les fichiers isolés. cp -p te permettra de copier le fichier à l'identique (avec date de création, de dernier accès...)
Pour exploiter ton idée de la variable tu dois pouvoir utiliser des tableaux et faire un genre de "split"... mais j'ai jamais fait.
Mais pour la suite je te suis pas trop, au-delà de deux arguments ton cp va te hurler dessus (s'il y a plusieurs fichiers/répertoires dans source et cible).
Le cp -r c'est plutôt pour copier les arborescences, pas les fichiers isolés. cp -p te permettra de copier le fichier à l'identique (avec date de création, de dernier accès...)
Pour exploiter ton idée de la variable tu dois pouvoir utiliser des tableaux et faire un genre de "split"... mais j'ai jamais fait.
yankeekfp
Messages postés
6
Date d'inscription
vendredi 10 mai 2013
Statut
Membre
Dernière intervention
10 mai 2013
10 mai 2013 à 21:59
10 mai 2013 à 21:59
Oui tu as raison. Je suis donc encore loin de la solution :-).
Le script que tu proposes est surement la solution au problème. Pourrais-tu me l'ecrire en entier? J'ai du mal a suivre pour extraire avant et après le ":".
La commande "read" est pour lire un texte saisie au clavier je crois. Si oui, comment l'interpreteur shell va faire pour traiter ca dans un fichier?
Merci encore
Le script que tu proposes est surement la solution au problème. Pourrais-tu me l'ecrire en entier? J'ai du mal a suivre pour extraire avant et après le ":".
La commande "read" est pour lire un texte saisie au clavier je crois. Si oui, comment l'interpreteur shell va faire pour traiter ca dans un fichier?
Merci encore
Pierre8888
Messages postés
1053
Date d'inscription
mercredi 17 octobre 2012
Statut
Membre
Dernière intervention
17 mai 2015
165
Modifié par Pierre8888 le 10/05/2013 à 23:03
Modifié par Pierre8888 le 10/05/2013 à 23:03
Bonjour quel gestionnaire de fichiers à tu ?
Un passionné de Linux : Acer Aspire X1430-005 AMD radeon HD 6310 Xubuntu 12.04 LTS / Asus - X73BR AMD 7470M Kubuntu 12.10 / Acer Aspire X1430-005 AMD radeon HD 6310 Ubuntu 12.10 Gnome.
Un passionné de Linux : Acer Aspire X1430-005 AMD radeon HD 6310 Xubuntu 12.04 LTS / Asus - X73BR AMD 7470M Kubuntu 12.10 / Acer Aspire X1430-005 AMD radeon HD 6310 Ubuntu 12.10 Gnome.
En supposant que ta liste soit dans un fichier "list.txt"
Avant le :
Après le :
http://www.linuxcertif.com/doc/keyword/cut/
Ensuite
avec le code que je t'ai donné tout à l'heure, tu mets tout ça dans un sh, et tu lances.
Bien sûr tu peux faire des rm des fichiers créés pour faire propre.
En revanche là je suis sus Windows donc j'ai pas pu tester... donc y a peut-être deux trois trucs à modifier...
Pour le read c'est un truc que j'utilisais quand je faisais du Korn Shell (ksh). Ecrit comme ça dans un script ça lit ligne par ligne le fichier dirigé dans le done (done<Lefichier). Je pense que ça doit être universel comme syntaxe...
Avant le :
cut -d: -f1 list.txt > source.txt
Après le :
cut -d: -f2 list.txt > cible.txt
http://www.linuxcertif.com/doc/keyword/cut/
Ensuite
sed "s+ +\n+g" source.txt sourceFinale.txt idem pour cible
avec le code que je t'ai donné tout à l'heure, tu mets tout ça dans un sh, et tu lances.
Bien sûr tu peux faire des rm des fichiers créés pour faire propre.
En revanche là je suis sus Windows donc j'ai pas pu tester... donc y a peut-être deux trois trucs à modifier...
Pour le read c'est un truc que j'utilisais quand je faisais du Korn Shell (ksh). Ecrit comme ça dans un script ça lit ligne par ligne le fichier dirigé dans le done (done<Lefichier). Je pense que ça doit être universel comme syntaxe...
yankeekfp
Messages postés
6
Date d'inscription
vendredi 10 mai 2013
Statut
Membre
Dernière intervention
10 mai 2013
10 mai 2013 à 22:33
10 mai 2013 à 22:33
Je n'ai pas tres bien compris ta question, mais j'utilise RedHat.
Merci
Merci
yankeekfp
Messages postés
6
Date d'inscription
vendredi 10 mai 2013
Statut
Membre
Dernière intervention
10 mai 2013
10 mai 2013 à 23:13
10 mai 2013 à 23:13
Je vais tester tout ça.Juste un point, ma liste ne sera pas dans un fichier mais sera passé en argument à l'exécution du script. Par exemple, l'utilisateur mettra
$scriptcopie fic1 fic2 fic3 fic4 : rep1 rep2 rep3 rep4 rep5 rep6.
Pour prendre en compte cette liste, est-ce que je peux utiliser
echo "Donner les deux listes: $*"
Merci.
$scriptcopie fic1 fic2 fic3 fic4 : rep1 rep2 rep3 rep4 rep5 rep6.
Pour prendre en compte cette liste, est-ce que je peux utiliser
echo "Donner les deux listes: $*"
Merci.