Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

problème « find -execdir mv » sous Sid

18 réponses
Avatar
debiancbien
Bonjour à tous,

J'ai le problème suivant sous Sid  :
_______________________________________________________________________
$ tree -F --noreport
.
|__ test/
|__ TEST01

$ find . -regex ".*TEST01" -execdir mv '{}' test \;

$ tree -F --noreport
.
|__ test/
|__ test
________________________________________________________________________

Y'aurait-il un aimable collègue sidien dans la salle pour me dire si
c'est reproductible ?... ou pour m'expliquer la raison de ce
comportement irritant ? :)

J'ai également essayé avec un compte utilisateur « vierge » mais sans
succès. Par contre, le problème n'existe ni sous Squeeze ni sous
Slackware (13.37), qui donnent le résultat attendu.

Dans tous les cas, l'interpréteur était « bash » et la version des
findutils sous Sid est la 4.4.2-1+b1

Merci d'avance,
Alexandre

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/20110507203445.GB2301@localhost

8 réponses

1 2
Avatar
debiancbien
On Sun, May 08, 2011 at 03:54:13PM +0200, FR wrote:
Le dimanche 8 mai 2011 15:08:32, debiancbien a écrit :
> On Sun, May 08, 2011 at 08:02:49AM +0200, FR wrote:
> > Le dimanche 8 mai 2011 00:19:05, alexandre a écrit :
> > > On Sat, May 07, 2011 at 11:25:45PM +0200, Bernard Schoenacker wrote:
> > > > Le Sat, 7 May 2011 22:40:29 +0200,
> > >
> > > Slackware (13.37)
> > >
> > > - bash version 4.1.10(2)
> > > - findutils 4.4.2
> > >
> > > Squeeze
> > >
> > > - bash version 4.1.5(1) (même que Sid)
> > > - findutils 4.4.2-1+b1 (même que Sid)
> > >
> > > Sid
> > >
> > > - bash version 4.1.5(1)
> > > - findutils 4.4.2-1+b1
> >
> > Curieux, chez moi (sid) la version de bash est 4.1-3 (et je n'ai pas le
> > pb)
>
> Bonjour François, merci pour la vérification !
>
> Concernant la version, j'aurais du préciser que j'ai utilisé
> « bash --version » tandis que pour findutils j'ai utilisé la version des
> paquets de chaque distro. En version de paquet j'ai aussi la bash-4.1-3.
> Désolé pour la petite confusion :)

OK donc les versions sont les mêmes en revanche je confirme :
$ tree -F --noreport
.
├── test/
└── TEST01
$ find . -regex ".*TEST01" -execdir mv '{}' test ;
$ tree -F --noreport
.
└── test/
└── TEST01



Impec, je le préciserai dans mon rapport de bug. Merci encore.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
luc schimpf
Le 08/05/2011 15:13, debiancbien a écrit :

Bonjour Luc et merci pour la vérification. J'avais effectivement utilisé
« bash --version » mais c'est tiré du paquet 4.1-3 comme pour vous.
Es-tu en experimental pour « findutils » ?


vraisemblablement bien que je ne me souvienne pas avoir fait ça...


--

Luc Schimpf
www.au-ptit-bon-air.eu

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
debiancbien
Pour référence, le rapport de bug :
http://bugs.debian.org/cgi-bin/bugreport.cgi?bugb6072

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
debiancbien
On Sun, May 08, 2011 at 05:19:27PM +0200, debiancbien wrote:
Pour référence, le rapport de bug :
http://bugs.debian.org/cgi-bin/bugreport.cgi?bugb6072



La réponse (traduite) du mainteneur du paquet :
--
Les étapes suivantes se succèdent et correspondent au comportement
documenté
1. mv ./TEST01 test
2. find continue sa recherche. Il trouve « TEST01 » (fraichement déplacé
dans « test »)
3. La commande execdir est évaluée. find se déplace dans le répertoire
« test » et exécute « mv ./TEST01 test »

L'utilisation de « -depth » donnera le résultat escompté.
--

En fait, « -depth » ne change rien, mais en suivant cette logique on
pourrait utiliser

$ find . -path "./test" -prune -or -regex ".*TEST01" -execdir mv '{}' test ;
ou encore (même si c'est déconseillé dans le manuel), utiliser « -exec »
au lieu de « -execdir ».

... par exemple, en plus des suggestions faites par Rémi.

Maintenant ça me semble logique, même si ça n'explique pas les
différences de comportement entre les intervenants dans ce fil ou avec
Squeeze et Slackware... à suivre donc.

Encore merci à tous pour vos réponses.
Alexandre

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Sylvain L. Sauvage
Le dimanche 8 mai 2011 à 23:36:45, debiancbien a écrit :
[…]
La réponse (traduite) du mainteneur du paquet :
--
Les étapes suivantes se succèdent et correspondent au
comportement documenté
1. mv ./TEST01 test
2. find continue sa recherche. Il trouve « TEST01 »
(fraichement déplacé dans « test »)
3. La commande execdir est évaluée. find se déplace dans le
répertoire « test » et exécute « mv ./TEST01 tes t »
[…]
Maintenant ça me semble logique, même si ça n'explique pas
les différences de comportement entre les intervenants dans
ce fil ou avec Squeeze et Slackware... à suivre donc.



Si : find prend les fichiers/répertoires dans un certain
ordre.
Donc, soit il fait :
1. ./TEST01 : ok, mv dans ./test/
2. ./test :
2.1. ./test/TEST01 : ok, mv vers ./test/test
soit il fait :
1. ./test : vide
2. ./TEST01 : ok, mv dans ./test/

L’ordre doit dépendre du FS, de la date de création, de la
locale, etc.

--
Sylvain Sauvage

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Jérémie Courrèges-Anglas
Suis le conseil du mainteneur du paquet : utilise -depth.
Si tu rencontres le même problème, alors c'est qu'il y a effectivement
un bug.
Pour l'instant, ce n'est pour moi qu'un problème lié à la bizarre
utilisation conjointe de -execdir, mv et d'un chemin relatif.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
debiancbien
On Thu, May 12, 2011 at 10:13:58AM +0200, Jérémie Courrèges-Anglas wrote:
Suis le conseil du mainteneur du paquet : utilise -depth.
Si tu rencontres le même problème, alors c'est qu'il y a
effectivement un bug.



Je confirme que, sur ma Sid, j'ai le même résultat avec ou sans -depth :
$ tree -F --noreport
.
├── test/
└── TEST01
$ find . -depth -regex ".*TEST01" -execdir mv '{}' test ;
$ tree -F --noreport
.
└── test/
└── test

... je ne suis pas super-chaud pour refaire un rapport de bug tout de
suite :p

Pour l'instant, ce n'est pour moi qu'un problème lié à la bizarre
utilisation conjointe de -execdir, mv et d'un chemin relatif.



Oui ! Je reconnais :x

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
debiancbien
On Mon, May 09, 2011 at 08:16:14AM +0200, Sylvain L. Sauvage wrote:
Le dimanche 8 mai 2011 à 23:36:45, debiancbien a écrit :
>[…]
> La réponse (traduite) du mainteneur du paquet :
> --
> Les étapes suivantes se succèdent et correspondent au
> comportement documenté
> 1. mv ./TEST01 test
> 2. find continue sa recherche. Il trouve « TEST01 »
> (fraichement déplacé dans « test »)
> 3. La commande execdir est évaluée. find se déplace dans le
> répertoire « test » et exécute « mv ./TEST01 test »
>[…]
> Maintenant ça me semble logique, même si ça n'explique pas
> les différences de comportement entre les intervenants dans
> ce fil ou avec Squeeze et Slackware... à suivre donc.

Si : find prend les fichiers/répertoires dans un certain
ordre.
Donc, soit il fait :
1. ./TEST01 : ok, mv dans ./test/
2. ./test :
2.1. ./test/TEST01 : ok, mv vers ./test/test
soit il fait :
1. ./test : vide
2. ./TEST01 : ok, mv dans ./test/

L’ordre doit dépendre du FS, de la date de création, de la
locale, etc.



En l'occurrence, les FS et locale's sont les mêmes sur ma Sid et ma
Squeeze. J'ai essayé également de créer test/ et TEST01 dans un ordre
différent et ça ne change rien. L'ordre doit donc plutôt se cacher dans
l'et caetera.

M'enfin bon, la prochaine fois, je privilégierai l'explication du
problème par mes déficiences plutôt que par le bug. Ça me (et vous) fera
gagner du temps ;)

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
1 2