Eu suponho que você quer dizer que você tem uma estrutura como:
├── f1
│ ├── a1
│ ├── a2
│ ├── b1
│ ├── b2
│ ├── c1
│ ├── c2
├── f2
│ ├── a3
│ ├── a4
│ ├── b3
│ ├── b4
│ ├── c3
│ ├── c4
e você quer acabar com um diretório como este:
a-files
├── a1
├── a2
├── a3
└── a4
Assumindo:
- o diretório de trabalho atual é o diretório pai de todos os diretórios
f1 f2 f3
Você poderia fazer:
mkdir a-files
for files in f*/a* ; do cp "$files" a-files ; done
para copiar todos os arquivos que começam com a
para um novo diretório a-files
de todos os diretórios que começam com f
. Você pode repetir para arquivos que começam com b ...
mkdir b-files
for files in f*/b* ; do cp "$files" b-files ; done
Nota: se houver algum nome de arquivo duplicado, cada arquivo gravado no novo diretório sobrescreverá outro com o mesmo nome; assim, no final do loop, o novo diretório terá apenas uma cópia do último arquivo a ser gravado. com esse nome. Você poderia usar o -n
flag para cp
para evitar sobrescrever e, em seguida, obteria o primeiro arquivo com esse nome em vez do último:
for files in f*/a* ; do cp -n "$files" a-files ; done