2009-03-10 8 views
10

ho una directory che assomigliano a questospostare tutti i file da directory 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 

Quello che voglio fare è quello di spostare tutti i file "* .masked" nelle sottodirectory /1 fino /Un. C'è un modo compatto per farlo in Linux/Unix?

risposta

16

Il modo tipico di spostare file tutti i file corrispondenti una particolare espressione è

mv 1/*.masked targetDir 

dove targetDir potrebbe essere ..

Se vuoi spostarlo dalle directory 1,2,3, quindi puoi fare qualcosa come

mv */*.masked targetDir 

Oppure, se si desidera spostare specificamente dalla directory numerate, si può semplicemente eseguire qualcosa di simile

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

Molte shell unix supportano l'operatore * anche nella porzione di directory del percorso. Le seguenti opere in almeno bash e zsh:

ls */*.masked 

Ciò restituirà tutti i file che terminano in .masked una directory più profonda.

Così per spostarli:

mv */*.masked destination 
5
mv */*.masked .