Comment déplacer tous les fichiers d'un dossier à un autre à l'aide de la ligne de commande?


245

J'aimerais savoir comment déplacer tous les fichiers d'un dossier vers un autre avec une ligne de commande.

Disons que je suis dans mon dossier Téléchargements et il y a 100 fichiers que je voudrais déplacer dans mon dossier Vidéos, sans avoir à écrire le nom de tous les fichiers.


Vous parlez de déménager, filesmais de personnes vous expliquant comment déménager, non seulement, filesmais folderségalement. Est-ce que ça va?
Askar

2
@ Hontvári Levente a donné il y a un an une réponse qui semble être de loin la meilleure, nette, simple et qui fonctionne. Alors, comment n’a-t-il obtenu que 3 voix (contre 262 pour la réponse actuellement au sommet)?
Ray Butterworth

Réponses:


331

Ouvrez un terminal et exécutez cette commande:

mv  -v ~/Downloads/* ~/Videos/

Il déplacera tous les fichiers et dossiers du dossier Téléchargements vers le dossier Vidéos.


Pour déplacer tous les fichiers, mais pas les dossiers:

Si vous souhaitez déplacer tous les fichiers (mais pas les dossiers) du dossier Téléchargements vers le dossier Vidéos, utilisez cette commande.

find ~/Downloads/ -type f -print0 | xargs -0 mv -t ~/Videos

Pour déplacer uniquement les fichiers des dossiers de téléchargement, mais pas des sous-dossiers:

Si vous souhaitez déplacer tous les fichiers du dossier Téléchargements, mais pas les fichiers contenus dans les dossiers du dossier de téléchargement, utilisez cette commande:

find ~/Downloads/ -maxdepth 1 -type f -print0 | xargs -0 mv -t ~/Videos

Ici, l' -maxdepthoption spécifie à quelle profondeur find doit essayer, 1c'est-à-dire uniquement le répertoire spécifié dans la commande find. Vous pouvez essayer d'utiliser 2, 3également pour tester.

Voir la page de manuel de recherche Ubuntu pour une explication détaillée.


3
vous pouvez utiliser mv seul pour déplacer un répertoire entier vers un autre dossier: dossier mv ~ / Documents
JohnMerlino

20
FYI Je crois que votre première commande ("mv -v ~ / Téléchargements / * ~ / Vidéos /") ne déplacera pas les fichiers de points.
Mark Doliner

1
Oui, cela ne déplacera pas les fichiers .files
Anwar

3
Nb. votre -print0 | xargs -0 mv -t ~/Videospeut être plus efficacement fait avec -exec mv -t ~/Videos \{\} \+:-)
artfulrobot

3
mv -v ~/Downloads/* ~/Videos/ne fonctionne pas pour les fichiers cachés
FreeLightman

28
mv ~/Downloads/* ~/Videos

Tous les fichiers, y compris les sous-dossiers, seront déplacés dans le répertoire de votre choix mv. Si vous voulez cp(copier) ou rm(supprimer) vous aurez besoin de l' -roption (récursive) pour inclure les sous-dossiers.


2
Ma commande mv n'a pas d'option -R (Ubuntu 14.04).
Mark Doliner

1
@MarkDoliner, oui, l' mvoption récursive n'est pas nécessaire pour inclure les sous-dossiers. On peut aussi l'utiliser pour renommer.
Alen

Je n'avais pas besoin de *. La même chose s'est produite sans utiliser l'étoile.
MycrofD

Le ~ / dans le préfixe des noms de dossier ne fonctionne pas toujours (ne fonctionne pas sur bash et git atleast)
Krish Munot

Cette solution générera une erreur si le répertoire source est vide.
Pierre Thibault

11

Pour le cas simple:

mv ~/Downloads/* ~/Videos

Si vous souhaitez également déplacer des fichiers point (masqués), définissez l' option shell dotglob .

shopt -s dotglob
mv ~/Downloads/* ~/Videos

Cela laisse le jeu d’options shell.

Pour une utilisation ponctuelle de dotglob, exécutez les commandes dans un sous-shell:

(shopt -s dotglob; mv ~/Downloads/* ~/Videos)

Une note pour moi: La dernière option (shopt -s dotglob; mv ~/Downloads/* ~/Videos) ne fait que déplacer (couper) le contenu (y compris les fichiers cachés). Dans ce cas, les dossiers d'origine et de destination doivent déjà exister. A la fin, le répertoire d'origine devient vide.
Pathros

Cela devrait être la réponse acceptée
megar

11

C'est possible en utilisant rsync, par exemple:

rsync -vau --remove-source-files src/ dst/

où:

-v, --verbose: Augmente la verbosité.

-a, --archive: Mode archive; égal à égal -rlptgoD(pas -H, -A, -X).

-u, --update: Ignore les fichiers les plus récents sur le récepteur.

--remove-source-files Cela indique rsyncde supprimer du côté envoi les fichiers (c’est-à-dire les non-répertoires) qui font partie du transfert et qui ont été dupliqués avec succès du côté destinataire.

Si vous avez des privilèges root, préfixez-le avec sudopour remplacer les problèmes d’autorisation potentiels.


1
ATTENTION! l'option --delete-after, comme indiqué, ne fonctionne pas comme prévu. Il ne supprime pas les fichiers source après une copie réussie ... IL SUPPRIME TOUS LES FICHIERS RESTANTS / AUTRES DE LA DESTINATION. (comme @kenorb l'a noté ... mais je n'ai pas lu assez attentivement! DOH)
Jay Marm

4

Utilisation

mv -v ~/rootfolder/branch/* ~/rootfolder

J'espère que ça aide. Parce que j'avais la même douleur et que je perdais beaucoup de temps à réparer mon erreur.


2

Pour déplacer un répertoire avec ou sans contenu vers son nouveau nom, de la même manière que vous utiliseriez la mvcommande pour renommer un fichier:

mv -T dir1 dir2

où:

  • -T traite la destination comme un fichier normal
  • dir1 est le nom original du répertoire
  • dir2 est le nouveau nom du répertoire

NB: dir2ne doit pas exister.

J'espère que cela économisera beaucoup de temps à quelqu'un, auparavant, je créerais un répertoire avec le nouveau nom, puis déplacerais le contenu du répertoire dans le répertoire créé précédemment.

Utiliser pour les sous-répertoires

Cette commande est utile lorsque de nombreux fichiers ont été enregistrés dans un sous-dossier du répertoire cible, c.-à-d Downloads/mp4. Dans cet exemple, le sous mv -T Downloads/mp4 Videos- mp4dossier sera supprimé et tous les fichiers qu'il contient seront déplacés vers le dossier Vidéos.


1
+1 car testé dans Xubuntu 14.04. J'ai ajouté un exemple dans cette réponse pour montrer que cette commande entraînera la dir1suppression de. Outre cette précaution, cette réponse a noté quelque chose de bon pour un usage quotidien.
clearkimura

1
"Pour déplacer un répertoire avec ou sans contenu vers son nouveau nom" Comment pouvez-vous déplacer un répertoire ... vers un nom? Ça n'a aucun sens. "-T traite la destination comme un fichier normal" Comment une destination peut-elle être un fichier? Voulez-vous dire répertoire?
Monica Heddneck le

C'est comme si vous renommiez un fichier sous son nouveau nom, comme vous le feriez avec quelque chose comme, mv fileA fileBmais l' -Tindicateur, dans ce cas, traite le répertoire / destination comme un fichier et le renomme.
Feyisayo Sonubi

Travaillé pour moi :)
Naveen Kumar V

1
  1. Accédez à la ligne de commande et accédez au répertoire dans lequel vous souhaitez le déplacer. cd folderNamehere
  2. Type pwd. Cela imprimera aussi le répertoire que vous voulez déplacer.
  3. Ensuite, allez dans le répertoire contenant tous les fichiers. cd folderNamehere
  4. Maintenant pour déplacer tous les types de fichiers mv *.* typeAnswerFromStep2here

Cela déplacera tous les fichiers de ce répertoire à l’autre.


3
Cela ne correspondra pas aux fichiers sans extension. par exemple , si un dossier contient les fichiers: foo.txt, bar.et les bardeux bar.et barne sera pas déplacé. Utiliser *au lieu de *.*s'occupe de ça. Mais dans les deux cas, les fichiers cachés tels que: .foobarne seront pas déplacés.
Dan

1
mv source_path/* destination_path/

Dans ce cas, vous devez *indiquer une barre oblique et le chemin source après afin que les fichiers se trouvent dans le chemin source_path au lieu du répertoire source complet.

Exemple: mv /home/username/test/* /home/username/test2/

La commande ci-dessus déplace tous les fichiers (sauf s'ils sont cachés) du répertoire source vers le répertoire de destination.


0

l'essayer

find ~/Desktop -type f -iname  "*.mp4" -exec mv {} ~/Videos \;

-type avec l'argument -type vous pouvez spécifier le type fichier.on cette instruction qui est le fichier moyen.if en utilisant de -d qui signifie répertoire.

-iname: la méthode la plus courante et la plus évidente pour rechercher un fichier consiste à utiliser son argument -name. Si vous n'êtes pas sûr de sa sensibilité à la casse, vous pouvez utiliser l'argument -iname.

mv {} et enfin de spécifier le répertoire cible, puis de déplacer les fichiers à l'aide de l'argument mv {}

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.