Copie de fichiers d'une seule extension - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 04-05-2005 à 19:03:43
find /home/mat/docs/ -type f -name "*.tex" -exec cp '{}' /home/mat/backup \;
Marsh Posté le 04-05-2005 à 21:37:06
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.
Marsh Posté le 04-05-2005 à 21:47:15
| 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'
Marsh Posté le 04-05-2005 à 22:29:46
Merci de ta réponse, pillow
Je ne pensais pas que ce serait si compliqué
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] [:atlantis]](https://forum-images.hardware.fr/images/perso/atlantis.gif)
Marsh Posté le 05-05-2005 à 16:50:55
Code :
|
Attention, ça ne marchera pas s'il y a des espaces dans les noms de fichiers ou de répertoires.
Marsh Posté le 05-05-2005 à 17:28:14
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/ |
Mais ça ne marche toujours pas s'il y a des espaces qui trainent.
Ceci par contre:
cd /home/mat/backup/ |
doit marcher. Mais il faut utiliser zsh
Marsh Posté le 06-05-2005 à 08:15:22
Jar Jar a écrit :
|
Pour cela il suffit de changer la variable $IFS
Marsh Posté le 06-05-2005 à 11:12:45
| ory a écrit : Pour cela il suffit de changer la variable $IFS |
tu peux expliquer ?
Marsh Posté le 03-05-2005 à 23:15:29
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 :-)