Domanda

Ho una directory che assomiglia a questa

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

Quello che voglio fare è spostare tutti i " *. mascherati " file nelle sottodirectory / 1 fino a / Un . Esiste un modo compatto per farlo in Linux / Unix?

È stato utile?

Soluzione

Il modo tipico di spostare i file con tutti i file corrispondenti a un'espressione particolare è

mv 1/*.masked targetDir

dove targetDir potrebbe essere ..

Se vuoi spostarlo dalle directory 1,2,3, puoi fare qualcosa del genere

mv */*.masked targetDir

Oppure, se vuoi spostarlo in modo specifico dalle directory numerate, puoi semplicemente eseguire qualcosa come

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

Altri suggerimenti

Molte shell unix supportano anche l'operatore * nella parte della directory del percorso. Quanto segue funziona almeno in bash e zsh:

ls */*.masked

Questo restituirà tutti i file che finiscono in una directory .masked più in profondità.

Quindi per spostarli:

mv */*.masked destination
mv */*.masked .
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top