Programmation et script

-Listre d'arguments BASH / BIN / RM TROP Long - Solution

-Listre d'arguments BASH / BIN / RM TROP Long - Solution

Symptômes

Ce message d'erreur apparaît lorsque vous essayez de supprimer, de déplacer ou de copier une longue liste de fichiers. Lorsque vous utilisez votre shell, une commande ne peut accepter qu'un nombre limité d'arguments. Lorsque le nombre d'arguments fournis à la commande dépasse le nombre autorisé d'arguments, un message d'erreur apparaît:

-bash: / bin / rm: liste d'arguments trop longtemps 
Commande Linux pour trouver votre limite pour les arguments maximaux:
# getconf arg_max 2097152 

Exemple:

# rm * -bash: / bin / rm: liste d'arguments trop long 

Solution

Il existe un certain nombre de solutions pour ce problème. Premièrement, s'il n'y a pas de fichiers dans un répertoire que nous aimerions conserver, la solution la meilleure et la plus rapide est de simplement supprimer entier le répertoire entier et de le recréer à nouveau. Avant de continuer, assurez-vous que le répertoire ne contient pas de fichiers que vous souhaitez conserver et que vous prenez une note concernant une autorisation et la propriété de ce répertoire.

$ cd… / $ ls -d mydirectory $ rm -fr mydirectory $ mkdir mydirectory 

L'autre solution consiste à engager une boucle pour la boucle et à supprimer tous les fichiers un:

$ pour i in *; faire rm "$ i"; fait 

ou beaucoup plus rapide en utilisant printf et xargs:

$ printf '% s \ 0' * | xargs -0 rm 

ou

$ time echo -n * | tr "\ 0 '| xargs -0 rm 

Cependant, la solution ci-dessus a sa propre limitation car elle peut également supprimer les fichiers que nous aimerions conserver en cas d'expression régulière appropriée en place. Quant à un exemple ici, nous supprimerons uniquement *.SMS des dossiers:

$ pour je dans *.SMS; faire rm "$ i"; fait 

La dernière et proposée solution consiste à utiliser Regex pour diviser tous les fichiers en lots plus petits. Trouvez un modèle similaire dans tous les fichiers et divisez-les en groupes plus petits. Par exemple, supprimer, copier ou déplacer tous les fichiers qui commencent par un et avoir une extension SMS, Après cela, tous les fichiers qui commencent par b et ainsi de suite.:

$ rm a *.txt $ rm b *.SMS 

Vous pouvez également faire ce qui précède pour toutes les lettres en utilisant une boucle pour:

$ pour i dans $ (echo a… z); faire rm $ i *.SMS ; fait 
Yest est un excellent outil qui permet à l'utilisateur de faire des manipulations de dattes complexes en utilisant AB AB facile à comprendre la syntax...
Comment faire en sorte que Wdiddle3 définisse la minuterie IDDLE pour WD Ears Drive
Voici des étapes simples à suivre comment désactiver et définir la minuterie pour le parking de tête avec WD Ears Drive. Pour faire cette tâche, nous ...
Problème de clés de flèche VMware sur Ubuntu
Après avoir mis en place mes machines virtuelles VMware sur l'ubuntu, j'ai eu un problème en utilisant des touches fléchées lorsque mon pointeur de so...