A voir également:
- Deplacement de fichiers avec horodatage
- Historique déplacement google - Guide
- Explorateur de fichiers - Guide
- Wetransfer gratuit fichiers lourd - Guide
- Renommer plusieurs fichiers en même temps - Guide
- Fichiers bin - Guide
6 réponses
Utilisateur anonyme
Modifié par qqchquicommenceparQ le 14/05/2014 à 11:34
Modifié par qqchquicommenceparQ le 14/05/2014 à 11:34
salut,
UUOC !
mais comment donner le nom du fichier sauvegarder avec l'extention de DATE a chaque fichier ?
pourquoi le nom des fichiers à copier sont-ils dans un fichier ?
UUOC !
forboucle sur chaque mot, pas sur chaque ligne. :(
while read line
do echo "line"
done < fichier
mais comment donner le nom du fichier sauvegarder avec l'extention de DATE a chaque fichier ?
while read -r fichier
do cp -p fichier /destination/$(basename "$fichier")_$Date
done < fichier.txt
pourquoi le nom des fichiers à copier sont-ils dans un fichier ?
Merci pour ta reponse !
Mais ,je n'ai pas le nom des fichiers ,par contre leurs endroit oui ,du coup j'ai mis le chemin absolus de chaque repertoire dans un fichier listrep.txt.
Le script va lire chaque chemin ,et deplaceras tout le contenue dans mon archive.
ce qui reste c'est donner l'extention "$DATE" a chaque fichier deplacés.
qd tu ecris :
"cp -p fichier /destination/$(basename "$fichier")_$Date"
je n'ai pas le nom de "fichier"
je pense a un "find" :
find $i -type f exec cp {} ARCHIVE/ \;
mais mettre quoi comme nom apres ARCHIVE/"?????" pour avoir les meme fichiers avec "_DATE" ?
Merci
Mais ,je n'ai pas le nom des fichiers ,par contre leurs endroit oui ,du coup j'ai mis le chemin absolus de chaque repertoire dans un fichier listrep.txt.
Le script va lire chaque chemin ,et deplaceras tout le contenue dans mon archive.
ce qui reste c'est donner l'extention "$DATE" a chaque fichier deplacés.
qd tu ecris :
"cp -p fichier /destination/$(basename "$fichier")_$Date"
je n'ai pas le nom de "fichier"
je pense a un "find" :
find $i -type f exec cp {} ARCHIVE/ \;
mais mettre quoi comme nom apres ARCHIVE/"?????" pour avoir les meme fichiers avec "_DATE" ?
Merci
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
14 mai 2014 à 12:32
14 mai 2014 à 12:32
Salut,
$ tree rep/ # arborescence
rep/
|-- A
| |-- tata
| '-- toto
|-- B
| '-- titi
'-- C
'-- tutu
3 directories, 4 files
# Création variable date
$ DATE=$(date +"%d-%m-%Y_%H%M%S")
# La commande avec cp en mode verbeux
$ for i in $(find rep -depth -type d);do cp -b -Rvp -S "_${DATE}" --parents "${i}" backup ;done
rep -> backup/rep
«rep/C» -> «backup/rep/C»
«rep/C/tutu» -> «backup/rep/C/tutu»
«rep/B» -> «backup/rep/B»
«rep/B/titi» -> «backup/rep/B/titi»
«rep/A» -> «backup/rep/A»
«rep/A/tata» -> «backup/rep/A/tata»
«rep/A/toto» -> «backup/rep/A/toto»
«rep/C/tutu» -> «backup/rep/C/tutu» (archive : «backup/rep/C/tutu_14-05-2014_122634»)
«rep/B/titi» -> «backup/rep/B/titi» (archive : «backup/rep/B/titi_14-05-2014_122634»)
«rep/A/tata» -> «backup/rep/A/tata» (archive : «backup/rep/A/tata_14-05-2014_122634»)
«rep/A/toto» -> «backup/rep/A/toto» (archive : «backup/rep/A/toto_14-05-2014_122634»)
# Le contenu du backup
$ tree backup/
backup/
'-- rep
|-- A
| |-- tata
| |-- tata_14-05-2014_122634
| |-- toto
| '-- toto_14-05-2014_122634
|-- B
| |-- titi
| '-- titi_14-05-2014_122634
'-- C
|-- tutu
'-- tutu_14-05-2014_122634
4 directories, 8 files
# On initie à nouveau la variable DATE
$ DATE=$(date +"%d-%m-%Y_%H%M%S")
# Et on relance la commande
$ for i in $(find rep -depth -type d);do cp -b -Rvp -S "_${DATE}" --parents "${i}" backup ;done
«rep/C/tutu» -> «backup/rep/C/tutu» (archive : «backup/rep/C/tutu_14-05-2014_122706»)
«rep/B/titi» -> «backup/rep/B/titi» (archive : «backup/rep/B/titi_14-05-2014_122706»)
«rep/A/tata» -> «backup/rep/A/tata» (archive : «backup/rep/A/tata_14-05-2014_122706»)
«rep/A/toto» -> «backup/rep/A/toto» (archive : «backup/rep/A/toto_14-05-2014_122706»)
«rep/C/tutu» -> «backup/rep/C/tutu» (archive : «backup/rep/C/tutu_14-05-2014_122706»)
«rep/B/titi» -> «backup/rep/B/titi» (archive : «backup/rep/B/titi_14-05-2014_122706»)
«rep/A/tata» -> «backup/rep/A/tata» (archive : «backup/rep/A/tata_14-05-2014_122706»)
«rep/A/toto» -> «backup/rep/A/toto» (archive : «backup/rep/A/toto_14-05-2014_122706»)
# Nouveau contenu du backup
$ tree backup/
backup/
'-- rep
|-- A
| |-- tata
| |-- tata_14-05-2014_122634
| |-- tata_14-05-2014_122706
| |-- toto
| |-- toto_14-05-2014_122634
| '-- toto_14-05-2014_122706
|-- B
| |-- titi
| |-- titi_14-05-2014_122634
| '-- titi_14-05-2014_122706
'-- C
|-- tutu
|-- tutu_14-05-2014_122634
'-- tutu_14-05-2014_122706
4 directories, 12 files
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
14 mai 2014 à 13:14
14 mai 2014 à 13:14
Meuh non, pas z'ici ;-))
$ tree rep/
rep/
|-- A
| |-- le fichier à trou
| |-- tata
| '-- toto
|-- B
| '-- titi
'-- C
'-- tutu
3 directories, 5 files
$ for i in $(find rep -depth -type d);do cp -b -Rvp -S "_${DATE}" --parents "${i}" backup ;done
rep -> backup/rep
«rep/C» -> «backup/rep/C»
«rep/C/tutu» -> «backup/rep/C/tutu»
«rep/B» -> «backup/rep/B»
«rep/B/titi» -> «backup/rep/B/titi»
«rep/A» -> «backup/rep/A»
«rep/A/le fichier à trou» -> «backup/rep/A/le fichier à trou»
«rep/A/tata» -> «backup/rep/A/tata»
«rep/A/toto» -> «backup/rep/A/toto»
«rep/C/tutu» -> «backup/rep/C/tutu» (archive : «backup/rep/C/tutu_14-05-2014_122706»)
«rep/B/titi» -> «backup/rep/B/titi» (archive : «backup/rep/B/titi_14-05-2014_122706»)
«rep/A/le fichier à trou» -> «backup/rep/A/le fichier à trou» (archive : «backup/rep/A/le fichier à trou_14-05-2014_122706»)
«rep/A/tata» -> «backup/rep/A/tata» (archive : «backup/rep/A/tata_14-05-2014_122706»)
«rep/A/toto» -> «backup/rep/A/toto» (archive : «backup/rep/A/toto_14-05-2014_122706»)
$ tree backup/
backup/
'-- rep
|-- A
| |-- le fichier à trou
| |-- le fichier à trou_14-05-2014_122706
| |-- tata
| |-- tata_14-05-2014_122706
| |-- toto
| '-- toto_14-05-2014_122706
|-- B
| |-- titi
| '-- titi_14-05-2014_122706
'-- C
|-- tutu
'-- tutu_14-05-2014_122706
4 directories, 10 files
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
14 mai 2014 à 13:30
14 mai 2014 à 13:30
Bon allez, une spéciale dédicace à qcqcpQ :
;-))
while read i;do cp -b -Rvp -S "_${DATE}" --parents "${i}" backup;done < <(find rep -depth -type d)
;-))
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
14 mai 2014 à 14:26
14 mai 2014 à 14:26
Because of that tu le sais pourtant que <litanie>si les noms de fichiers contiennent un espace...</litanie>, la preuve que ça passe bien ;-))
C'est surtout valable en de
C'est surtout valable en de
ls *. Après je reconnais que tu es dans le vrai.
Merci a tous ,
entre temps j'ai fais ca et ca fct :
for i in 'cat list_rep.txt' ; do
for j in 'ls -1 "CHEMIN1/$i' ; do
cp -Rp $CHEMIN1/$i/$j ARCHIVE/$i/$(basename $j)_'date +"%Y-%m%d-%H.%M.%S"'
done
done
Mais a vous lire ,c vrai que cette methode a ses limites ne va pas plus loin qu'un sou repertoire.
Merci a tous !
entre temps j'ai fais ca et ca fct :
for i in 'cat list_rep.txt' ; do
for j in 'ls -1 "CHEMIN1/$i' ; do
cp -Rp $CHEMIN1/$i/$j ARCHIVE/$i/$(basename $j)_'date +"%Y-%m%d-%H.%M.%S"'
done
done
Mais a vous lire ,c vrai que cette methode a ses limites ne va pas plus loin qu'un sou repertoire.
Merci a tous !
y en a qui cherche les coups !?
mais, tu n'as pas répondu : pourquoi le noms des chemins sont-ils dans un fichier ?
while read -r chemin
do
for i in "$chemin"/*
do
test -d "$CHEMIN/$chemin" || mkdir "$CHEMIN/$chemin"
cp -p "$CHEMIN/$chemin/$fichier" Archive/$chemin/${fichier##/*}_$(date +'%Y-%m%d-%H.%M.%S')
done
done < list_rep.txt
mais, tu n'as pas répondu : pourquoi le noms des chemins sont-ils dans un fichier ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Par ce que j'ai plusieurs repertoire ,et je met le chemin absolu dans un fichier que je lis ligne par ligne
Bonjour,
Je suis en ksh et j'ai plusieurs repertoires.
Pour ta proposition :
- "while read -r chemin "
j'ai plusieurs chemins
- "cp -p "$CHEMIN/$chemin/$fichier" Archive/$chemin/${fichier##/*}_$(date +'%Y-%m%d-%H.%M.%S')"
${fichier##/*} : c'est le nom du fichier finale a la sauvegarde ?
Merci
Je suis en ksh et j'ai plusieurs repertoires.
Pour ta proposition :
- "while read -r chemin "
j'ai plusieurs chemins
- "cp -p "$CHEMIN/$chemin/$fichier" Archive/$chemin/${fichier##/*}_$(date +'%Y-%m%d-%H.%M.%S')"
${fichier##/*} : c'est le nom du fichier finale a la sauvegarde ?
Merci
while read -r cheminva lire chaque ligne du fichier, la mettre dans la variable
chemin, et exécuter
cp.
${fichier##motif}est un développement de variable qui permet de ne pas appeler de commande externe, qui n'affiche pas ce qui précéde le motif (c'est dans le
man: Retrait du motif correspondant au préfixe).
par exemple:
$ var=abcdbed'ailleurs, attention, je me suis trompé, ça doit être :
$ echo ${var##*b}
e
$ echo ${var#*b}
cdbe
${chemin##*/}:(
tu trouveras aussi dans le
manle développement des accolades, et donc au lieu d'utiliser un fichier, si tu n'as pas trop de chemins à explorer (ça peut devenir illisible), tu peux "résumer" des expressions, ainsi :
/chemin/{chemin1,ch{1,2,N}}/est développé en
/chemin/chemin1/ /chemin/ch1 /chemin/ch2/ /chemin/chN:)
et donc
for rep in /racine/{chemin_1,chemin_2,chemin_N}/peut éviter le recours à un fichier.
do echo "traitement de $rep"
done