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 23/10/2021, à 21:30

Ni1383

Utilisation de find -exec

Bonjour,

j'aimerais copier les fichiers de deux répertoires contenus dans un répertoire Souvenirs, Plage et Compagne en ne sélectionnant que ceux d'une date à une autre vers un autre répertoire nommé Echange.

Pour trouver les fichiers, aucun problème, j'ai tapé

find Souvenirs/Plage/ Souvenirs/Compagne/ -newermt "2016-06-22" ! -newermt "2018-09-21"

Ca affiche les bons.

En revanche pour copier les fichiers, j'ai utilisé

find Souvenirs/Plage/ Souvenirs/Compagne/ -newermt "2016-06-22" ! -newermt "2018-09-21" -exec cp{} Echanges/

Mais ça me met "paramètre manquant pour -exec".

Comment puis-je procéder pour copier les fichiers avec -exec ?

Merci pour votre aide.

Hors ligne

#2 Le 23/10/2021, à 21:37

ylag

Re : Utilisation de find -exec

Bonsoir,

Sans aucune garantie, essaie avec cette syntaxe :

-exec cp {} Echanges/ \;

?

Hors ligne

#3 Le 23/10/2021, à 21:38

Nuliel

Re : Utilisation de find -exec

Bonjour,
A première vue, il y a deux problèmes: j'imagine qu'il faut un espace entre cp et {}, et aussi que la commande se finisse par \; (en gros pour chaque fichier, la commande cp est appelée, ce qui doit pas être terrible niveau performances s'il y en a beaucoup)

Dernière modification par Nuliel (Le 23/10/2021, à 21:39)

Hors ligne

#4 Le 23/10/2021, à 21:41

Watael

Re : Utilisation de find -exec

Nuliel a écrit :

Bonjour,
A première vue, il y a deux problèmes: j'imagine qu'il faut un espace entre cp et {}, et aussi que la commande se finisse par \; (en gros pour chaque fichier, la commande cp est appelée, ce qui doit pas être terrible niveau performances s'il y en a beaucoup)

pas obligé :

find ... -exec cp -t destDir/ {} +

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

En ligne

#5 Le 23/10/2021, à 21:48

Nuliel

Re : Utilisation de find -exec

Pas bête! Je me suis toujours demandé à quoi pouvait servir cette option -t, voilà un bon exemple!

(Le + à la place du ; permet de ne faire qu'un appel à cp)

Hors ligne

#6 Le 23/10/2021, à 21:50

Ni1383

Re : Utilisation de find -exec

ylag a écrit :

Bonsoir,

Sans aucune garantie, essaie avec cette syntaxe :

-exec cp {} Echanges/ \;

?

Super merci beaucoup, ça marche parfaitement en mettant le point-virgule à la fin.

Merci à tous pour vos réponses.

Hors ligne

#7 Le 24/10/2021, à 09:58

Sciensous

Re : Utilisation de find -exec

@Watel: peux-tu détailler la différence avec un "simple"

find ... -exec cp  {} destDir/  +

merci smile


antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )

Hors ligne

#8 Le 24/10/2021, à 10:22

Watael

Re : Utilisation de find -exec

ça fait un peu "ceinture et bretelles".
si je me souviens bien, il y a un problème potentiel quand le slash final n'est pas présent, mais je n'arrive pas à le reproduire.


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

En ligne

#9 Le 24/10/2021, à 10:25

Nuliel

Re : Utilisation de find -exec

Perso je n'arrive pas à mettre {} avant:

nuliel@nuliel-desktop:~/tests$ ls
passwd
nuliel@nuliel-desktop:~/tests$ find . -exec echo machin {} +
machin . ./passwd
nuliel@nuliel-desktop:~/tests$ find . -exec echo {} machin +
find: paramètre manquant pour « -exec »
nuliel@nuliel-desktop:~/tests$

Hors ligne

#10 Le 24/10/2021, à 12:00

hotnuma

Re : Utilisation de find -exec

Pour cette raison je pense :

https://unix.stackexchange.com/question … -exec-with

Lors de l'utilisation de find ... -exec ... {} +
le {} doit être la dernière chose avant le +
(car find ajoute les chemins d'accès à la fin de la commande).


Xubuntu / GitHub

Hors ligne

#11 Le 24/10/2021, à 12:15

Tawal

Re : Utilisation de find -exec

Hello,

Sinon pour placer les résultats de find avant dans la commande à exécuter :

$ ls
test  test1
$ find . -exec sh -c 'echo $@ machin' sh '{}' +
. ./test ./test1 machin
$

Dernière modification par Tawal (Le 24/10/2021, à 12:16)


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