Il y a un directory dir/
. Il contient les sous a
directorys a
– z
. Je dois déplacer les sous a
directorys a
– y
dans le sous-directory z
. Si c'est difficile, alors pas a
– z
, 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}
-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. {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