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 22/11/2022, à 12:30

yves-etc

copie fichiers multiples

Bonjour à tous
J'ai un dossier /licences dedans des sous dossiers /certifs-v1, /certifs-v2...
Dans les sous dossiers se trouvent des fichiers qui on tous en commun d'avoir comme nom (truc)-red.qqchose
Ce que je voudrais faire, c'est de copier tous les fichiers *-red dans un dossier par exemple /Documents/photos
en ligne de commande pour éviter les oublis.
La doc d'Unix ne m'a pas apporté grand-chose.
Quelqu'un peut m'aider ?
Bonne journée !

Hors ligne

#2 Le 22/11/2022, à 12:58

Compte supprimé

Re : copie fichiers multiples

Bonjour,
un truc du genre?:

find /licences -name '*-red*' -exec cp {} /Documents/photos \; 2>/dev/null

à tester...

#3 Le 22/11/2022, à 14:32

Tawal

Re : copie fichiers multiples

Hello,

J'ajouterais le point dans le motif de -name afin de s'assurer que red est bien avant l'extension.
Et pour aller plus vite, et lancer moins de processus cp,  je ferais un traitement par lot :

find /licences -type f  -name '*-red.*' -exec cp -t /Documents/photos '{}' \+

J'ai aussi enlevé la redirection des erreurs vers /dev/null, c'est bien de les connaître quand même.

Edit:
Autant s'assurer aussi que l'on copie des fichiers, ajout du test -type f

Dernière modification par Tawal (Le 22/11/2022, à 14:36)


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#4 Le 15/12/2022, à 12:13

yves-etc

Re : copie fichiers multiples

Bonjour,
D'abord toutes mes excuses pour ne pas vous avoir remercié pour vos réponses.
Un bug, sans doute entre la chaise et l'écran, a fait que je n'ai pas eu de mail me prévenant d'une réponse.
(j'ai trouvé ! "suivre cette discussion" n'est pas cochée par défaut).
J'en suis là :

find /Documents/docs-licences-21-22 -type f  -name '*-red.*' -exec cp -t /Documents/photos-4x5 '{}' \+

ça me répond :

find: ‘/Documents/docs-licences-21-22’: Aucun fichier ou dossier de ce type

Pourtant j'ai bien :

drwxr-xr-x 5 administrateur administrateur 4096 déc.  15 11:35  Documents

et dans /Documents :

drwxrwxrwx 14 administrateur administrateur     4096 juil. 12 11:10 docs-licences-21-22

(entre autres)
Vu que /docs-licences-21-22 ne marchait pas, j'ai rajouté un /Documents

Qu'est ce que j'ai oublié ?
Bonne journée !

Hors ligne

#5 Le 15/12/2022, à 13:20

MicP

Re : copie fichiers multiples

Bonjour

yves-etc a écrit :


Pourtant j'ai bien :

drwxr-xr-x 5 administrateur administrateur 4096 déc.  15 11:35  Documents

et dans /Documents :

drwxrwxrwx 14 administrateur administrateur     4096 juil. 12 11:10 docs-licences-21-22

(entre autres)

C'est pour ça qu'on préfère avoir des retours utilisables de commandes
car si on avait eu des retours utilisables de commandes, on aurait pu voir le prompt
ce qui nous aurait permis de savoir depuis quel répertoire et avec quel compte utilisateur de quelle machine tu avais entré les commandes qui ont donné les retours ci-dessus.


Dans la ligne de commandes suivante que tu avais lancée :

find /Documents/docs-licences-21-22 -type f  -name '*-red.*' -exec cp -t /Documents/photos-4x5 '{}' \+

les chemins donnés sont des chemins absolus qui n'existent sans doute pas sur ton système Ubuntu:
le répertoire /Documents/docs-licences-21-22 et le répertoire /Documents/photos-4x5 n'existent pas
comme tu pourras le constater dans le retour de la ligne de commande suivante :

ls -ld /Documents/docs-licences-21-22  /Documents/photos-4x5

Et tu pourras aussi constater qu'il n'existe pas non plus de répertoire /Documents sur ton système Ubuntu :

ls -ld /Documents

Par contre, suivant le répertoire courant depuis lequel tu entreras la ligne de commande suivante
tu pourrais avoir un retour t'indiquant que les chemins relatifs des répertoires suivants existent :

ls -ld Documents/docs-licences-21-22  Documents/photos-4x5

Mais bien sûr, ça dépendra aussi du compte utilisateur qui va entrer la ligne de commande ci-dessus.

=======
En résumé, pour résoudre ton problème,
il te faudra d'abord chercher à comprendre ce qu'est :
- le répertoire courant
- le répertoire personnel d'un compte utilisateur
- un chemin relatif
- un chemin absolu

Dernière modification par MicP (Le 15/12/2022, à 13:42)

Hors ligne

#6 Le 15/12/2022, à 16:04

serged

Re : copie fichiers multiples

Tawal a écrit :

Hello,

J'ajouterais le point dans le motif de -name afin de s'assurer que red est bien avant l'extension.
Et pour aller plus vite, et lancer moins de processus cp,  je ferais un traitement par lot :

find /licences -type f  -name '*-red.*' -exec cp -t /Documents/photos '{}' \+

J'ai aussi enlevé la redirection des erreurs vers /dev/null, c'est bien de les connaître quand même.

Edit:
Autant s'assurer aussi que l'on copie des fichiers, ajout du test -type f

Le point ayant une signification dans les expressions rationnelles, il fait le faire précéder d'un antislash (\ !

find /licences -type f  -name '*-red\.*' -exec cp -t /Documents/photos '{}' \+

LinuxMint Vera Cinnamon et d'autres machines en MATE, XFCE... 20.x , 21.x ou 19.x
Tour : Asus F2A55 / AMD A8-5600K APU 3,6GHz / RAM 16Go / Nvidia GeForce GT610 / LM21.1 Cinnamon
Portable : LDLC Mercure MH : Celeron N3450 /RAM 4Go / Intel HD graphics 500 i915 / biboot Win 10 (sur SSD) - LM21.1 MATE (sur HDD)

Hors ligne

#7 Le 16/12/2022, à 19:03

Tawal

Re : copie fichiers multiples

Merci de cette précision serged.

En voici une autre, pour le test -name, ce n'est pas une regex mais un motif.

Mais ta remarque s'applique tout de même wink
Edit : non en fait :

$ ls -l
total 0
-rw-r--r-- 1 tawal tawal 0 16 déc.  19:04 red.pdf
-rw-r--r-- 1 tawal tawal 0 16 déc.  19:04 redXpdf
$ 
$ find . -type f -name "red.*"
./red.pdf
$

Le point est littéral dans un motif.

Dernière modification par Tawal (Le 16/12/2022, à 19:08)


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne