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

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Copie de fichiers d'une seule extension

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Copie de fichiers d'une seule extension

n°672036
Mat1212
Posté le 03-05-2005 à 23:15:29  profilanswer
 

Bonjour,
 
Je voulais tantôt faire un backup de mes fichiers LaTeX, donc j'ai fait

cp -r /home/mat/docs/*.tex /home/mat/backup/


croyant que ça allait me mettre tous mes fichiers tex dans le dossier backup. Mais tout ce que ça fait, c'est ça:

cp: ne peut évaluer `/home/mat/docs/*.tex': Aucun fichier ou répertoire de ce type


 
Alors je me demandais comment on pouvait faire pour faire un script qui copierait tous les fichiers du répertoire /home/mat/docs (ainsi que des sous-répertoires du dossier), et qui auraient l'extension .tex, pour les mettre dans un dossier de backup.
 
Si une astérisque ne marche pas comme "joker" avec la commande cp, y a-t-il un autre caractère à utiliser?
 
 
Merci d'avance pour vos réponses :-)

mood
Publicité
Posté le 03-05-2005 à 23:15:29  profilanswer
 

n°672648
Mat1212
Posté le 04-05-2005 à 18:59:34  profilanswer
 

Personne ne sait? :-|

n°672652
ory
Posté le 04-05-2005 à 19:03:43  profilanswer
 

find /home/mat/docs/ -type f -name "*.tex" -exec cp '{}' /home/mat/backup \;

n°672731
Mat1212
Posté le 04-05-2005 à 21:37:06  profilanswer
 

Hé ben, j'aurais jamais trouvé ça tout seul :-D Merci ory!
 
Mais quand je mets ça dans une console, il ne se passe rien :-? MAis il n'y a pas de message d'erreur non plus.

n°672734
Pillow
'cos the trees won't talk
Posté le 04-05-2005 à 21:47:15  profilanswer
 

ory a écrit :

find /home/mat/docs/ -type f -name "*.tex" -exec cp '{}' /home/mat/backup \;

La même chose avec zsh:

cp -i /home/mat/docs/**/*.tex /home/mat/backup/


Le problème avec ces deux commandes, c'est que tous les fichiers *.tex seront placés à la racine de /home/mat/backup. Si par malheur il y a deux fichiers qui ont le même nom, un des deux sera écrasé (ce qui est plutôt ennuyeux pour une sauvegarde!). D'où le -i pour limiter la casse; mais la situation reste bancale.
 
Si tu veux aussi copier la hiérarchie des fichiers concernés, il va te falloir jouer un peu du 'cut' [:spamafote]

n°672746
Mat1212
Posté le 04-05-2005 à 22:29:46  profilanswer
 

Merci de ta réponse, pillow :)
 
Je ne pensais pas que ce serait si compliqué [:angel_dooglas]
 
 
Comment est-ce que ça se fait que la commande de Ory ne fonctionne pas chez moi? Parce que, effectivement, j'ai plusieurs fichiers portant le même nom dans des répertoires différents [:atlantis]

n°672958
Jar Jar
Intaigriste
Posté le 05-05-2005 à 16:50:55  profilanswer
 

Code :
  1. BASEDIR=/home/mat/docs
  2. BACKUP=/home/mat/backup
  3. cd $BASEDIR
  4. for i in `find -name \*.tex`; do
  5.   mkdir -p $BACKUP/`dirname $i`
  6.   cp $i $BACKUP/`dirname $i`
  7. done


 
Attention, ça ne marchera pas s'il y a des espaces dans les noms de fichiers ou de répertoires.

n°672978
Pillow
'cos the trees won't talk
Posté le 05-05-2005 à 17:28:14  profilanswer
 

Ou, peut être un peu plus simple:

tar -cf /home/mat/backup/backup.tar $(find /home/mat/docs/ -type f -name "*.tex" )

L'avantage c'est qu'on peut créer de nouvelles archives avec des noms différents à chaque fois.
 
On peut aussi ne pas faire d'archive:

cd /home/mat/backup/
tar -c $(find /home/mat/docs/ -type f -name "*.tex" ) | tar -x

Mais ça ne marche toujours pas s'il y a des espaces qui trainent.
 
Ceci par contre:

cd /home/mat/backup/
tar -c /home/mat/docs/**/*.tex(.) | tar -x

doit marcher. Mais il faut utiliser zsh :whistle:

n°673323
ory
Posté le 06-05-2005 à 08:15:22  profilanswer
 

Jar Jar a écrit :

Code :
  1. BASEDIR=/home/mat/docs
  2. BACKUP=/home/mat/backup
  3. cd $BASEDIR
  4. for i in `find -name \*.tex`; do
  5.   mkdir -p $BACKUP/`dirname $i`
  6.   cp $i $BACKUP/`dirname $i`
  7. done


 
Attention, ça ne marchera pas s'il y a des espaces dans les noms de fichiers ou de répertoires.


 
Pour cela il suffit de changer la variable $IFS

n°673408
[Albator]
MDK un jour, MDK toujours !
Posté le 06-05-2005 à 11:08:10  profilanswer
 

rsync ne ferait-il pas l'affaire ?

mood
Publicité
Posté le 06-05-2005 à 11:08:10  profilanswer
 

n°673409
jotenakis
Posté le 06-05-2005 à 11:12:45  profilanswer
 

ory a écrit :

Pour cela il suffit de changer la variable $IFS


tu peux expliquer ?


---------------
Jotenakis

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

  Copie de fichiers d'une seule extension

 

Sujets relatifs
Probleme de partage des fichiers sous xp familial[ubuntu] comment changer son navigateur de fichiers?
quelle partition pour échanger des fichiers windows-linuxLogiciel libre pour lire des fichiers .nsf (base Lotus Notes)???
Quel logiciel pour couper des fichiers video?[HELP]Comparer 2 fichiers ?
[Debian] Connaître la liste des fichiers de configurationRécupérer des fichiers jpg effacés sous Linux Mandrake
parcours des fichiers dans un Makefile 
Plus de sujets relatifs à : Copie de fichiers d'une seule extension


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