-Listre d'arguments BASH / BIN / RM TROP Long - Solution
- 3240
- 182
- Noa Faure
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 longtempsCommande 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
Tutoriels Linux connexes:
- Comment déplacer le dossier sur Linux
- Commandes Linux de base
- Commandes Linux: les 20 meilleures commandes les plus importantes que vous devez…
- Vim Editor Basics in Linux
- Script bash: utilisation des drapeaux avec des exemples d'arguments
- Comment configurer un serveur OpenVPN sur Ubuntu 20.04
- Commande man dans Linux avec des exemples
- Ubuntu 20.04: Liste des clients torrent
- Ubuntu 20.04 astuces et choses que vous ne savez peut-être pas
- Comment gérer l'histoire de bash
- « Introduction
- Comment stocker toutes les commandes de shell immédiatement après l'exécution dans .Fichier Bash_History »