GNU/Linux >> Tutoriels Linux >  >> Linux

Comment déplacer un grand nombre de fichiers sous Linux

Pour déplacer des fichiers d'un répertoire à un autre, le 'mv ‘ La commande est utilisée sous Linux. Cette commande est disponible sous Linux par défaut et peut être utilisée pour déplacer des fichiers ainsi que des répertoires.

La syntaxe à utiliser pour la commande mv est :

$ mv file1 file2 /tmp

Si nous voulons déplacer des fichiers de, disons, la même extension (par exemple, txt ) ou qui sont numérotés de manière incrémentielle (par exemple, file_1 , fichier_2 , etc.), des caractères génériques peuvent être utilisés pour spécifier tous ces fichiers au lieu de taper chaque nom.

$ mv *.txt /tmp
$ mv file_* /tmp

En gros, 'mv ' peut avoir n'importe quel nombre d'arguments, qui sont les fichiers ou répertoires à déplacer. Le dernier argument est le répertoire cible où ils doivent être déplacés.

Problème de déplacement d'un grand nombre de fichiers

Les systèmes Linux ont une limite prédéfinie sur le nombre maximum d'arguments pouvant être utilisés avec une seule commande. Cette limite varie d'un système à l'autre en fonction de la taille de la pile.

Ainsi, si un très grand nombre de fichiers sont spécifiés avec le caractère générique avec 'mv ', Par exemple. plus d'une centaine de milliers de fichiers, il génère une erreur :"Liste d'arguments trop longue ”.

Par exemple, dans l'image ci-dessous, le dossier contient 253420 des dossiers. Ainsi, cela donne l'erreur susmentionnée lorsque nous essayons de les déplacer.

$ ls -l | wc -l
$ ls | head -1000
$ mv file_* /tmp

Solution :utilisez la commande "Rechercher"

Pour résoudre ce problème, nous utilisons la fonction "trouver ' commande. Le "trouver La commande "recherche essentiellement des fichiers dans des répertoires en fonction de différents paramètres.

Nous exécutons 'trouver ' dans le même répertoire que les fichiers que nous voulons déplacer. Ensuite, nous utilisons le '-exec' paramètre de 'trouver ' qui vous permettra d'exécuter n'importe quelle commande sur la sortie de find.

Nous exécutons 'mv ‘ avec '-exec' paramètre.

$ find . -name "file_*" -exec mv  {} /tmp \;

Ici, le premier argument, '.' ((point) répertoire courant) est le répertoire où trouver les fichiers. L'argument “-name” et la chaîne qui suit spécifie l'expression à l'aide de laquelle les fichiers requis peuvent être répertoriés.

Ensuite, nous spécifions le 'mv ‘ commande après un argument '-exec' . Les parenthèses ouvertes '{ }' sont un espace réservé pour l'argument qui doit être utilisé à partir de la sortie de find.

Vous pouvez confirmer en exécutant ce qui suit et vérifier que les fichiers ont été déplacés avec succès vers ‘/tmp’ .

$ ls -l /tmp | wc -l

Lire connexe :Comment copier un grand nombre de fichiers sous Linux

Conclusion

Dans cet article, nous avons vu comment déplacer un grand nombre de fichiers d'un répertoire à un autre, et contourner avec succès la 'Liste d'arguments trop longue ' erreur sous Linux.

Si vous avez des commentaires ou des questions, faites-le nous savoir dans les commentaires ci-dessous !


Linux
  1. Comment augmenter la limite du nombre de fichiers ouverts sous Linux

  2. Comment renommer des fichiers sous Linux

  3. Comment compresser plusieurs fichiers sous Linux

  4. Comment puis-je déplacer des fichiers avec xargs sous Linux ?

  5. Comment déplacer une partition sous GNU/Linux ?

Comment copier un grand nombre de fichiers sous Linux

Comment compresser des fichiers volumineux (100 Go +) plus rapidement sous Linux

Comment envoyer un ping à un numéro de port sous Linux

Comment utiliser Plus de commandes sous Linux pour lire des fichiers texte volumineux

Comment compter le nombre de fichiers dans un répertoire sous Linux

Comment compresser un fichier sous Linux