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 06/12/2020, à 11:58

J46

Copie récursive

Bonjour,

J'ai un disque d'archives (origine Windows) dans lequel j'ai une multitude d'images dispersées avec de nombreuses copies de chacune.
Je voudrais les regrouper dans un même dossier. Pour cela, en ligne de commande depuis la racine de mon disque USB, j'ai tenté sans succès la commande

cp -u -r -v -t ~/Images *.jp* 

qui me répond "impossible d'évaluer '*.jp*': Aucun fichier ou dossier de ce type" alors que j'en ai beaucoup trop pour le faire manuellement.
Pourriez-vous me dire quelle est mon erreur dans la compréhension du mode récursif de cp et comment la corriger?

Merci d'avance et bon dimanche.

Jacques

Hors ligne

#2 Le 06/12/2020, à 12:48

moko138

Re : Copie récursive

Ta description manque de clarté :

1) Veux-tu copier ? Ou déplacer ?

2) Comme répertoire de destination, veux-tu Images (de ton home) ? Ou un répertoire à la racine du disque usb (DDE) ?
     > Si c'est ~/Images (de ton home), as-tu vérifié que ton home avait suffisamment d'espace libre ? (Car si tu satures ton home, ta session graphique ne démarrera plus avant que tu n'aies libéré de l'espace via la console - ce qui est inconfortable quand on ne l'a jamais fait).
     > Si c'est un répertoire à la racine du DDE, et que tu veuilles copier, as-tu vérifié que ce disque avait suffisamment d'espace libre ?

3) Quel est le chemin exact de la racine de ton disque USB ? Montre déjà (DDE monté) :

echo; df -Thx tmpfs -x devtmpfs -x squashfs; echo; df -Tix tmpfs -x devtmpfs -x squashfs

%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne

#3 Le 06/12/2020, à 14:44

pingouinux

Re : Copie récursive

Bonjour,
*.jp* correspond aux fichiers du seul répertoire courant.
Pour voir ceux de l'arborecence, et ne pas tenir compte de la casse :

shopt -s globstar nocaseglob
cp ...... **/*.jp*

Et pour voir aussi les fichiers cachés (commençant par un point) du répertoire courant, ajouter en tête :

shopt -s dotglob

Hors ligne

#4 Le 06/12/2020, à 18:39

J46

Re : Copie récursive

Merci pingouinux,

Cela fonctionne (presque) comme je veux.
J'obtiens bien une remise à plat de mes fichiers quand je fais à partir de ma clé USB de test. Par contre, quand je lance le processus sur le disque externe qui m'intéresse, j'obtiens comme réponse

bash: /usr/bin/cp: Liste d'arguments trop longue

.
De plus, le paramètre -u de cp ne fonctionne pas comme je le pensais. Il garde le 1er fichier trouvé et non le plus récemment modifié.

Bonne soirée

Dernière modification par J46 (Le 06/12/2020, à 19:10)

Hors ligne

#5 Le 06/12/2020, à 22:00

J46

Re : Copie récursive

Je crois que je vais abandonner car en y réfléchissant, je dois dépasser les limites de mémoire de mon PC.
Reste la solution semi manuelle : liste des fichiers concernés dans un fichier intermédiaire et retraitement avec Libre Office pour obtenir un script.

Bonne semaine à tous

Hors ligne

#6 Le 06/12/2020, à 22:41

Watael

Re : Copie récursive

et en passant par find ?

find ./ -type f -iname "*.jp*" -exec cp -u -t "$destDir/" {} \;

parce que, en effet, s'il y a beaucoup de fichier, le Développement des chemins (**/*.jp*) passe tous les fichiers trouvés par le shell sur la ligne de commande, qui ne peut contenir plus d'un certain nombre de caractère.
ce n'est pas la machine qui est en cause. C'est le noyau, il me semble.
je crois me souvenir que c'est paramétrable, mais je n'ai pas retenu comment, car c'était une manipulation trop compliquée pour un besoin tellement ponctuel...


Connected \o/
Welcome to sHell. · eval is evil.

En ligne

#7 Le 07/12/2020, à 11:11

J46

Re : Copie récursive

Merci pour ce nouveau moyen de répondre à la question. Marche bien sur mon USB de test même s'il me reste mon interrogation sur cp -u qui ne semble pas fonctionner comme je le comprends. J'ai été obligé d'ajouter --preserve=timestamps (avec un petit problème sur man cp qui présente un tiret de coupure de mot entre time et stamps).

Je vous tiens au courant pour le test en vrai grandeur !

Bonne journée

Hors ligne