Pregunta

Tengo un directorio que se ve así

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

Lo que quiero hacer es mover todos los " *. enmascarados " archivos en los subdirectorios / 1 hasta / Un . ¿Existe una forma compacta de hacerlo en Linux / Unix?

¿Fue útil?

Solución

La forma típica de mover archivos que coinciden con una expresión particular es

mv 1/*.masked targetDir

donde targetDir podría estar ..

Si desea moverlo desde los directorios 1,2,3, puede hacer algo como

mv */*.masked targetDir

O, si desea moverlo específicamente desde directorios numerados, puede ejecutar algo como

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

Otros consejos

Muchos shells de Unix también admiten el operador * en la parte del directorio de la ruta. Lo siguiente funciona al menos en bash y zsh:

ls */*.masked

Esto devolverá todos los archivos que terminen en .masked un directorio más profundo.

Entonces, para moverlos:

mv */*.masked destination
mv */*.masked .
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top