tl;dr Toujours citer les globs dans find : find . -maxdepth 1 -type f -name "*.jpg"
(remarquez le "
caractères entourant *
).
Dans votre cas, le Shell interprète *.jpg
(notez le *
) et en essayant de faire correspondre les noms de fichiers dans le répertoire actuel qui se terminent par le caractère .jpg
. Il existe un fichier nommé pic1 (1).jpg
de sorte que le nom du fichier remplace *.jpg
. La commande du système est donnée par le Shell devient
find . -maxdepth 1 -type f -name 'pic1 (1).jpg'
Pour voir en profondeur, essayez de tracer la commande originale en utilisant strace
. Ce qui est réellement exécuté est :
touch foo.jpg bar.jpg
strace find . -maxdepth 1 -type f -name *.jpg 2>&1 | grep jpg
execve("/usr/bin/find", ["find", ".", "-maxdepth", "1", "-type", "f", "-name", "bar.jpg", "foo.jpg"], [/* 62 vars */]) = 0
...