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?

Foi útil?

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 .
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top