Si j'ai un répertoire contenant des fichiers dont les noms ont des espaces, par exemple
$ ls -1 dir1
file 1
file 2
file 3
Je peux tous les copier avec succès dans un autre répertoire comme celui-ci:
$ find dir1 -mindepth 1 -exec cp -t dir2 {} +
Cependant, la sortie de find dir1 -mindepth 1
contient des espaces non échappés:
$ find dir1 mindepth 1
dir1/file 1
dir1/file 3
dir1/file 3
Si j'utilise à la print0
place de print
, la sortie contient toujours des espaces non échappés:
$ find dir1 mindepth 1 -print0
dir1/file 1dir1/file 2dir1/file 3
Pour copier ces fichiers manuellement en utilisant cp
, j'aurais besoin d'échapper aux espaces; mais il semble que ce ne soit pas nécessaire quand cp
les aguments proviennent find
, que j'utilise +
ou \;
à la fin de la commande.
Quelle en est la raison?
find..exec
peut gérer des noms de fichiers étranges par lui-même ..