Pages : 1
#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
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.
Hors 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
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
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.
Hors 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