Maison >développement back-end >Golang >Comment exécuter des commandes « mv » avec des caractères génériques dans Go ?

Comment exécuter des commandes « mv » avec des caractères génériques dans Go ?

DDD
DDDoriginal
2024-12-14 20:48:13178parcourir

How to Run `mv` Commands with Wildcards in Go?

Exécuter des commandes MV avec des caractères génériques dans Go

Dans Go, le package exec permet l'exécution de commandes externes. Cependant, lorsque vous tentez d'exécuter une commande mv avec un caractère générique à l'aide de exec.Command, une erreur indiquant « Aucun fichier ou répertoire de ce type » peut survenir.

La raison de cette erreur est que lorsqu'un utilisateur entre une commande contenant un caractère générique, tel que "mv ./source-dir/*", le shell étend le caractère générique en une liste de fichiers correspondants. Cependant, dans Go, la fonction exec.Command transmet simplement la chaîne contenant le caractère générique comme argument à la commande, plutôt que de la développer.

Pour résoudre ce problème, vous pouvez soit développer manuellement le caractère générique en utilisant le fonction filepath.Glob, qui renvoie une tranche de chemins de fichiers correspondants. Alternativement, on peut invoquer le shell pour effectuer l’expansion. Ceci peut être réalisé en utilisant la fonction exec.Command avec "/bin/sh" comme premier argument, suivi de "-c" et de la chaîne de commande avec le caractère générique, tel que :

cmd := exec.Command("/bin/sh", "-c", "mv ./source-dir/* ./dest-dir")

By en tirant parti de cette méthode, le shell gérera l'expansion du caractère générique, permettant à la commande mv de s'exécuter avec succès.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn