Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 ?

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 smile.

Romain

PS : Merci encore vous deux.

Hors ligne