Mover todos os arquivos dos diretórios One Step Up
Pergunta
Eu tenho diretórios que olhar como este
fool@brat:/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
O que eu quero fazer é mover-se para fora todo o "* .masked" arquivos nos subdiretórios /1
/Un
até.
Existe uma maneira compacta para fazê-lo em Linux / Unix?
Solução
A forma habitual de mover arquivos de todos os arquivos correspondentes uma expressão particular é
mv 1/*.masked targetDir
onde targetDir poderia ser ..
Se você quiser movê-lo de diretórios 1,2,3, então você pode fazer algo como
mv */*.masked targetDir
Ou, se você deseja movê-lo especificamente de diretórios numerados, você pode simplesmente executar algo como
mv [0-9][0-9]/*.masked targetDir
Outras dicas
Muitos shells UNIX suportam o operador * na parte do diretório do caminho também. As seguintes obras em, pelo menos, bash e zsh:
ls */*.masked
Isso retornará todos os arquivos que terminam em .masked um diretório mais profundo.
Assim, para movê-los:
mv */*.masked destination
mv */*.masked .