Tengo la siguiente estructura de directorios:
Main_Dir
|
-----------------------------------
Subdir1 Subdir2 Subdir3
| | |
--------- --------- ---------
| | | | | | | | |
fo1 fo2 f03 fo1 fo2 f03 fo1 fo2 f03
Quiero copiar todos los subdirectorios ( Subdir1, Subdir2, Subdir3) en una nueva carpeta. Pero solo quiero copiar fo1y fo2carpetas en el nuevo lugar.
No estoy seguro de cómo podría hacerse.

Respuestas:
Si el árbol de directorios es más que sólo
..../f03puede utilizar estersynccomando para copiar cadafo1Yfo2y excluyen cualquier otro directorio con el nombrefo*.Cuando trato con este tipo de escenarios de copia, siempre uso
rsyncy es--dry-runy--verbosemodifica para poder ver lo que va a hacer sin tener que copiar los archivos.Ejemplo
Carrera en seco.
Si desea ver parte de
rsyncla lógica interna de lo que se incluye / excluye, utilice el--verboseinterruptor.Si necesita excluir otras formas de directorios, puede agregar varias exclusiones.
fuente
Uso
rsync:fuente
Podrías probar algo como esto:
El
findcomando devuelve todos los subdirectorios directos de Main_Dir.basenamedevolverá el nombre del subdirectorio encontrado (por ejemplo,basename Main_Dir/Subdir1devolucionesSubdir1). A continuación, utiliza la cáscara de la expansión de llaves a la tipificación evitarfo1yfo2múltiples veces y copiarlos en el recién creadonew_dir/$(basename $subdir)directorio.En el caso específico en el que menciona donde solo hay directorios debajo
Main_Diry donde no hay espacios o caracteres extraños en los nombres, puede simplificar lo anterior parafuente
Si la estructura de su directorio es exactamente como en su ejemplo (es decir, todos los
foarchivos están en el mismo nivel):fuente