Comment déplacer des sous-directorys dans un autre sous-directory dans le même directory?

Il y a un directory dir/ . Il contient les sous a directorys az . Je dois déplacer les sous a directorys ay dans le sous-directory z . Si c'est difficile, alors pas az , mais en fournissant une list de directorys qui doivent être déplacés.

Comment puis-je le faire dans bash?

Quant à moi plus sûr moyen d'utiliser find

 find dir/* -prune -type d -name "[ay]" ! -name "z" -exec mv -t dir/z {} + 

Utilisez l'extension de l'accolade: http://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html

Pour votre cas, faites:

 mv {a..y} z/ 

Si vous avez une list de directorys, dir3 , dir3 et dir3 , faites quelque chose comme:

 mv -tz/ dir1 dir2 dir3 

Ou peut-être:

 mv -tz/ dir{1..3} 

Brèves explications:

  • -t option signifie "cible". Il est généralement utilisé pour éviter la confusion dans les cas impliquant le déplacement de plusieurs files / directorys.
  • L'expansion de l' {1..15} telle que {1..15} imprimera tous les nombres de 1 à 15, et {a..f} imprimera tous les alphabets d' a till f .

Note: ce n'est pas la façon la plus propre de le faire (voir la réponse de shivams pour cela), et fonctionne seulement si vous avez seulement les directorys az dans le directory dir .


J'ai toujours utilisé le plus facile à retenir

 mv * z 

qui, bien sûr, se plaint que

 mv: cannot move 'z' to a subdirectory of itself, 'z/z' 

mais sinon fait ce que vous voulez.

Cela s'applique (au less) à GNU coreutils