Parfois, je vois la commande suivante:
find . -name * -exec ls -a {} \;
On m'a demandé d'exécuter ceci.
Que {} \;
signifie ici?
-name *
est pire que redondant. Parce que le *
n'est pas entre guillemets, le shell le développe pour former la liste des noms de fichiers du dossier en cours, les espaces étant traités de manière incorrecte, ce qui entraîne des résultats inattendus ou un message d'erreur. Un point supplémentaire find
a de nombreuses fonctions, l’une d’eux étant de lister les fichiers; cela évite d'avoir à utiliser -exec
. Par exemple, vous pouvez utiliser find . -print
ou find . -ls
. Enfin, il y a deux façons d'échapper à la demi-virgule: soit comme vous avez fait avec la barre oblique inverse, \;
ou en citant: ';'
. Utilisez celui avec lequel vous vous sentez le plus à l'aise.
-name *
est redondant.