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
Libérer: 2024-12-14 20:48:13
original
174 Les gens l'ont consulté

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")
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal