(Résolu) -Bash / bin / mv Liste d'arguments trop long

(Résolu) -Bash / bin / mv Liste d'arguments trop long

Lorsque vous travaillez avec un grand nombre de fichiers dans Linux, il n'est pas rare de rencontrer l'erreur «/ bin / mv: liste d'arguments trop long». Cette erreur se produit lorsque vous tente de déplacer ou de renommer trop de fichiers à la fois, et est une limitation du système d'exploitation sous-jacent. Dans cet article, nous discuterons de la cause de cette erreur et explorerons les moyens de contourner cela pour effectuer des opérations de fichiers à grande échelle efficacement et sans erreur. Que vous soyez un débutant ou un utilisateur expérimenté de Linux, cet article vous fournira des informations précieuses pour surmonter ce problème commun.

-bash: / bin / mv: liste d'arguments trop longtemps

Une liste d'arguments trop long est un problème courant avec une fête qui peut se produire lorsque vous avez de longs paramètres ou arguments de ligne de commande. Vous commencez à exécuter un script et il lance des erreurs comme «commande non valide» ou «trop long». La raison en est que le shell essaie de lire devant la fin de votre liste d'arguments et qu'il n'y a pas de fin du tuyau d'entrée pour attendre. Une variable système Arg_max définit le Longueur de caractère maximum des arguments Dans une commande shell.

Les solutions

La solution rapide consiste à utiliser xargs utilitaire de ligne de commande ou commande de recherche avec -exec… . Les deux commandes divisent une grande commande en plus mineure et complètent le travail sans erreurs.

  • Solution 1: trouver avec xargs
  • Pour résoudre ce problème, vous pouvez utiliser le -print0 option avec le "trouver" commande et le -0 Option avec la commande «xargs». Cela permettra "Xargs" Pour gérer correctement les fichiers avec des espaces ou des caractères spéciaux, et permettez également le traitement de grands nombres de fichiers sans rencontrer l'erreur «Liste d'argument trop longue».

    Voici un exemple:

    trouver . -Tapez f -name "*.txt "-print0 | xargs -0 mV -t ~ / documents  

    Dans cet exemple, l'option -print0 est utilisée avec la commande «Find» pour séparer les fichiers avec un caractère null au lieu d'une nouvelle ligne, et l'option -0 est utilisée avec la commande «xargs» pour spécifier que les éléments d'entrée sont séparés par null personnages. Cela permet aux «xargs» de gérer un grand nombre de fichiers sans rencontrer l'erreur «Liste des arguments trop long».

  • Solution 2: trouver avec exec
  • Au lieu d'utiliser des xargs, nous pouvons également utiliser - la commande exec. Ici trouver Will Rechercher les fichiers et Exec exécutera la commande MV pour chaque fichier un par un et déplacera le fichier vers le répertoire de destination.

    trouver . -nom '*.txt '-exec mv  ~ / documents / \; 

    Les commandes par défaut ci-dessus navigueront récursivement vers les sous-répertoires. Pour limiter la découverte au répertoire actuel uniquement -profondeur max suivi d'un nombre limite aux sous-répertoires.

    trouver . -nom '*.txt '-maxdepth 1 -exec mv  ~ / documents / \; 

Conclusion

En conclusion, l'erreur «MV: Liste d'arguments trop long» est un problème courant lorsque vous travaillez avec un grand nombre de fichiers dans Linux. Il se produit lorsque le nombre de fichiers est passé comme arguments à la commande «MV» dépasse la limite maximale autorisée par le système d'exploitation. Pour surmonter ce problème, nous pouvons utiliser les commandes «Find» et «Xargs» pour transmettre un grand nombre de fichiers comme arguments à la commande «MV», ou nous pouvons utiliser des outils comme «parallèle» ou «GNU parallèle» pour effectuer un grand nombre -Les opérations de fichiers à l'échelle efficace et sans erreur.

Comprendre les causes et les solutions à l'erreur «/ bin / mv: la liste des arguments trop long» est important pour quiconque travaille avec un grand nombre de fichiers dans Linux, et vous aidera à éviter la frustration et le temps perdu lors de l'exécution des opérations de fichiers.