logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 17-01-2020 13:54:04

firstcode
Membre
Inscription : 17-01-2020

mv: Argument list too long

Bonjour à tous smile

J'ai un problème pour déplacer des milliers de fichiers *.txt qui se situe dans des milliers de répertoires.

Voiçi l'erreur

-bash: /bin/mv: Argument list too long





Dans mon repertoire "toto1" je souhaite déplacer  tous les fichiers *.txt dans repertoire de ma racine /toto2/

Je me déplace dans le repertoire toto1 et je saisi :

mv *.txt / chemin_de_ma_racine/toto2


-bash: /bin/mv: Argument list too long






Comment je peu faire ?

Merçi smile

Edit à toto : Afin  de permettre à tous de lire aisément les codes sur le forum, j'ai mis les commandes user en conformité avec le BBCode du forum.
Leu tuto du BBCode est là :
Oh, quel beau BB …code où comment mettre en forme vos messages dans le fofo wink


"Fais le ou ne le fais pas"

Hors ligne

#2 17-01-2020 14:17:06

saitama-san
Membre
Inscription : 28-07-2019

Re : mv: Argument list too long

utiliser la commande find wink
recherche : "bash Argument list too long" tu trouveras des pistes

Hors ligne

#3 17-01-2020 14:51:15

firstcode
Membre
Inscription : 17-01-2020

Re : mv: Argument list too long

Salut,

Merçi pour ta reponse smile

Dernière modification par firstcode (17-01-2020 15:07:11)


"Fais le ou ne le fais pas"

Hors ligne

#4 18-01-2020 02:21:31

Beta-Pictoris
Membre
Lieu : Angers
Distrib. : Buster
Inscription : 11-08-2015

Re : mv: Argument list too long

Un de tes fichiers, que tu veux déplacer, commence peut-être par un tiret. La commande "mv" voit alors ce fichier comme une option non valide.

Essaye de déplacer tes fichiers en faisant suivre la commande "mv" d'un double tiret :

mv -- *.txt / chemin_de_ma_racine/toto2

Dernière modification par Beta-Pictoris (18-01-2020 02:22:37)

Hors ligne

#5 18-01-2020 10:03:37

firstcode
Membre
Inscription : 17-01-2020

Re : mv: Argument list too long

Salut,

Merci pour l'information.
Je viens d'executer la commande et j'ai toujours cette erreur.

-bash: /bin/mv: Argument list too long



sad


"Fais le ou ne le fais pas"

Hors ligne

#6 18-01-2020 10:28:20

smolski
quasi...modo
Lieu : AIN
Distrib. : backports (buster) 10
Noyau : Linux 4.19.0-8-amd64
(G)UI : gnome
Inscription : 21-10-2008

Re : mv: Argument list too long

Voir le tuto de find te sera certainement plus utile pour ensuite créer une ligne de commande sûre et efficace :
https://debian-facile.org/doc:systeme:find

Ensuite on pourra t'aider pour les arguments selon tes retours ici. smile

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#7 18-01-2020 10:32:29

smolski
quasi...modo
Lieu : AIN
Distrib. : backports (buster) 10
Noyau : Linux 4.19.0-8-amd64
(G)UI : gnome
Inscription : 21-10-2008

Re : mv: Argument list too long

Par ailleurs, pour ne pas perdre des trucs en route, il est conseillé d'utiliser rsync plutôt que mv, ce sera aussi rapide qu'avec mv et plus sûr en cas de pépin. cool

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#8 18-01-2020 10:35:48

smolski
quasi...modo
Lieu : AIN
Distrib. : backports (buster) 10
Noyau : Linux 4.19.0-8-amd64
(G)UI : gnome
Inscription : 21-10-2008

Re : mv: Argument list too long

Le tuto rsync : https://debian-facile.org/doc:reseau:rsync

Force et courage

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#9 18-01-2020 11:59:03

Beta-Pictoris
Membre
Lieu : Angers
Distrib. : Buster
Inscription : 11-08-2015

Re : mv: Argument list too long

Beta-Pictoris a écrit :

Un de tes fichiers, que tu veux déplacer, commence peut-être par un tiret. La commande "mv" voit alors ce fichier comme une option non valide.

Essaye de déplacer tes fichiers en faisant suivre la commande "mv" d'un double tiret :

mv -- *.txt / chemin_de_ma_racine/toto2


Par contre, il faut retirer les espaces après le slash. De plus, on peut mettre ta destination entre quotes pour éviter des problèmes :

mv -- *.txt  '/chemin_de_ma_racine/toto2'


Ou :

mv *.txt  '/chemin_de_ma_racine/toto2'

Dernière modification par Beta-Pictoris (18-01-2020 12:01:52)

Hors ligne

#10 18-01-2020 12:46:39

valdé
Administrateur
Lieu : Paris
Distrib. : Debian GNU/Linux trixie/sid x86_64
Noyau : 6.6.13-amd64
(G)UI : MATE 1.26.1
Inscription : 04-10-2016

Re : mv: Argument list too long

La commande rsync est adaptée pour cela effectivement, sinon voici une méthode barbare en mode bulldozer :

for i in *.txt;do
    mv $i /chemin_de_ma_racine/toto2/
done

Dernière modification par valdé (18-01-2020 12:49:00)


~# Where there is a shell, there is a way.

Hors ligne

#11 20-01-2020 16:38:34

firstcode
Membre
Inscription : 17-01-2020

Re : mv: Argument list too long

Bonjour a tous,


Merçi pour votre réponse.
J'ai tenté mais sans succès les deux commandes  sad


mv -- *.txt / chemin_de_ma_racine/toto2
et
mv -- *.txt  '/chemin_de_ma_racine/toto2'


@valdo : je veu bien tenté cette commande. Je dois l'executer dans le repertoire en root et saisir :

for i in *.txt;do
    mv $i /chemin_de_ma_racine/toto2/
done

Thank's

"Fais le ou ne le fais pas"

Hors ligne

#12 20-01-2020 17:11:11

MicP
Membre
Inscription : 29-02-2016

Re : mv: Argument list too long

Bonjour

En activant l'option nullglob,
si aucun fichier ayant l'extension .txt n'est trouvé,
la boucle for ne lancera pas la commande mv
pour essayer de déplacer un fichier nommé *.txt qui n'existe pas.

Au cas où un des noms de fichier de la liste *.txt
comporterait un caractère espace
entoure ce nom de guillemets dans la ligne de commande mv
comme ci-dessous :

shopt -s nullglob    # man bash => "…si aucune correspondance n'est trouvée, le mot est supprimé.…"

for i in *.txt; do
    mv "$i" /chemin_de_ma_racine/toto2/
done

Dernière modification par MicP (21-01-2020 08:30:21)

Hors ligne

#13 21-01-2020 15:43:57

firstcode
Membre
Inscription : 17-01-2020

Re : mv: Argument list too long

Bonjour à tous,


J'ai bien tenté en activant l'option shopt -s nullglob  mais il ne se passe rien.

root@machine:/shopt -s nullglob




root@machine:/data/toto/toto1/fr# for i in *.txt; do
> mv "$i" /data/toto2/base/
> done




Et la apres avoir saisie "done" j'ai rien qui se passe.

Si j'ouvre une autre console que que je fais la commande

 ls /data/toto2/base/


je n'ai rien....kernal_panic.gif

sad

Dernière modification par firstcode (21-01-2020 15:48:10)


"Fais le ou ne le fais pas"

Hors ligne

#14 21-01-2020 16:11:01

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian
Noyau : Dur
(G)UI : gui gui, je zuis un doiseau
Inscription : 07-07-2008
Site Web

Re : mv: Argument list too long

Si j'ai bien compris, tu veux déplacer tous les fichiers .txt qui sont quelque part dans ton home (ou dans un sous-dossiers) et les mettre dans un dossier commun /toto2 (Mais attention, si tu as deux fichiers qui ont le même nom, ça écrasera les doublons définitivement)

Ça peut être fait avec find :

find /home/truc -iname '*.txt' -exec mv '{}' /toto2/ \;



Pour tester sans faire le déplacement :

find /home/truc -iname '*.txt' -exec echo mv '{}' /toto2/ \;



Pour copier au lieu de déplacer :

find /home/truc -iname '*.txt' -exec cp '{}' /toto2/ \;


captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#15 21-01-2020 18:44:05

saitama-san
Membre
Inscription : 28-07-2019

Re : mv: Argument list too long

les commandes de captnfab devraient fonctionner.
et pourquoi ne pas utiliser "mv -i" ? pour éviter toute suppression

Hors ligne

#16 22-01-2020 09:55:53

firstcode
Membre
Inscription : 17-01-2020

Re : mv: Argument list too long

Bonjour à tous,



Avec la commande rsync -AV j'ai réussi à copier et non à déplacer les fichiers dans /toto2/
Je pourrais continuer à les copier mais c'est mon espace disque qui ne supportera pas la charge d'ou la raison de les déplacer.


Apres avoir saisi la commande :

find /home/truc -iname '*.txt' -exec mv '{}' /toto2/ \;



J'ai le jolie message :

mv: cannot move ‘/data/toto1*.txt: No space left on device



Tout se passe dans /dev/md2 c'est à dire repertoire toto1 et toto2......

/dev/md2        856G  808G  4.1G 100% /data
/dev/md0        268M   33M  218M  13% /boot




yikes


"Fais le ou ne le fais pas"

Hors ligne

#17 22-01-2020 11:00:54

smolski
quasi...modo
Lieu : AIN
Distrib. : backports (buster) 10
Noyau : Linux 4.19.0-8-amd64
(G)UI : gnome
Inscription : 21-10-2008

Re : mv: Argument list too long

fait partie par partie avec rsync, soit dans la sélection en partageant les fichiers dans des répertoires type save1 save2 etc... que tu supprimeras au fur et à mesure, soit carrément en arrêtant la copie sauvagement, les originaux restant en place.
Ensuite, tu détruis les originaux une fois que tu en as vérifié la conformité.
mv est destructeur, si tu as un problème et qu'il s'arrête, tu vas perdre dans les fichiers en cours.

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

Pied de page des forums