#1 Le 30/05/2010, à 16:31
- rom117
[Résolu] cp récursif seulement sur fichiers, pas sous-dossiers
Bonjour,
Je cherche à faire une copie à partir d'un répertoire de tous les fichiers (et seulement les fichiers) contenus dans celui-ci et ses sous répertoires. Est-ce possible ??
Le cp -R est bien récursif, mais il copie aussi les sous-dossiers, et ça je ne veut pas !!
Merci d'avance,
Romain
Dernière modification par rom117 (Le 30/05/2010, à 17:46)
Hors ligne
#2 Le 30/05/2010, à 16:44
- Elzen
Re : [Résolu] cp récursif seulement sur fichiers, pas sous-dossiers
Hem... je crois qu'il va falloir que tu précises un peu, parce que si tu demandes les fichiers contenus dans les sous-répertoires, en théorie, ça veut dire les sous-répertoires aussi...
Tu veux dire que tu voudrais une commande qui te récupérerait tout le contenu des sous-répertoires et qui te les copierait « en vrac » dans le répertoire cible ? Dans ce cas, si deux fichiers ont le même nom dans deux sous-répertoires différents, tu t'attends à ce que ça fasse quoi ?
Elzen : polisson, polémiste, polymathe ! (ex-ArkSeth)
Un script pour améliorer quelques trucs du forum.
La joie de t'avoir connu surpasse la peine de t'avoir perdu…
timezone[blocklist]
Hors ligne
#3 Le 30/05/2010, à 17:06
- rom117
Re : [Résolu] cp récursif seulement sur fichiers, pas sous-dossiers
Oui oui, c'est exactement ça, je veux une commande qui me copie le contenu des sous-répertoires en vrac. Normalement il ne devrait pas y avoir de doublons. Dans ce cas imaginons qu'on prenne le premier fichier à prendre un nom donné, ou bien celui qui est le plus récent. Cela n'est pas le plus important car si 2 fichiers ont le même nom alors c'est que c'est les mêmes (dans mon cas) !
Dernière modification par rom117 (Le 30/05/2010, à 17:07)
Hors ligne
#4 Le 30/05/2010, à 17:24
- kyncani
Re : [Résolu] cp récursif seulement sur fichiers, pas sous-dossiers
Par exemple deux solutions, la première est celle que j'utiliserais moi :
find /repertoire/source/ -type f | perl -nle 'BEGIN { use File::Copy } copy $_, "/repertoire/destination/" or die "ERREUR: $! ($_)"'
La deuxième que j'aime beaucoup moins mais que l'on trouve plus souvent sur les forums :
find /repertoire/source/ -type f -exec cp {} /repertoire/destination/ \;
Je n'aime pas trop la deuxième solution parce que je n'aime pas trop spawner un trop grand nombre de processus. Un processus pour chaque copie, quelle misère.
Hors ligne
#5 Le 30/05/2010, à 17:44
- rom117
Re : [Résolu] cp récursif seulement sur fichiers, pas sous-dossiers
Génial !
J'ai essayé ton premier code, kyncani, et ça marche ! Je savais pas qu'on pouvait utiliser du perl dans un terminal ! Trop bien !
Bon ben résolu .
Romain
PS : Merci encore vous deux.
Hors ligne