2009-03-10 12 views
10

J'ai un répertoire qui ressemblent à ceDéplacement tous les fichiers de répertoires One Step Up

[email protected]:/mydir/ucsc_mm8> tar -xvf *.tar 
1/chr1.fa.masked 
1/chr1_random.fa.masked 
2/chr2.fa.masked 
3/chr3.fa.masked 
4/chr4.fa.masked 
5/chr5.fa.masked 
5/chr5_random.fa.masked 
19/chr19.fa.masked 
Un/chrUn_random.fa.masked 

Ce que je veux faire est de déplacer tous les fichiers « * .masked » dans les sous-répertoires /1 jusqu'à /Un. Existe-t-il un moyen compact de le faire sous Linux/Unix?

Répondre

16

La façon typique de déplacer des fichiers tous les fichiers correspondant à une expression particulière est

mv 1/*.masked targetDir 

où targetDir pourrait être ..

Si vous voulez le déplacer des répertoires 1,2,3 alors vous pouvez faire quelque chose comme

mv */*.masked targetDir 

Ou, si vous voulez déplacer spécifiquement à partir des répertoires numérotés, vous pouvez simplement lancer quelque chose comme

mv [0-9][0-9]/*.masked targetDir 
5

De nombreux shells unix prennent également en charge l'opérateur * dans la partie répertoire du chemin. Les travaux suivants dans au moins bash et zsh:

ls */*.masked 

Ceci renverra tous les fichiers qui se terminent par .masked un répertoire plus profond.

Donc, pour les déplacer:

mv */*.masked destination 
Questions connexes