Copiar todos os arquivos identificado pelas iniciais e jogar em diretórios diferentes [RESOLVIDO]

1. Copiar todos os arquivos identificado pelas iniciais e jogar em diretórios diferentes [RESOLVIDO]

Newton
Netospt

(usa Outra)

Enviado em 16/06/2019 - 12:15h

Salve Comunidade, sou novo por aqui e to com uma dúvida, poderiam me ajudar ?
Tenho um diretorio com vários arquivos, inclusive repetidos as iniciais, mudando apenas a numeração final :
MTST1X-TT00000-00001-20190412.123206
MTST1X-TT00000-00001-20190412.123207
MMDH1X-TT00000-00001-20190412.123206
ZBRE03-TT00000-00001-20190412.123206

Gostaria de copiar cada um deles identificado pelo primeiro campo para seus respectivos diretorios.
utilizei o comando : find -name "*TT00000*" | cut -d/ -f7 | sort -k1 | cut -c1-6 | uniq , para identificar os "ID" sem repetição ( pois os repetidos irão para o mesmo diretorio):
Comando find é retornado:
MTST1X
MMDH1X
ZBRE03

Minha dúvida, como inserir o cp *MTST1X* em cada um deles para seus respectivos diretorios diferentes ?
Eu jogo para um arquivo o resultado do "FIND" ? alguem tem alguma solução ?

Desde já, agradeço.
Abs





  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 16/06/2019 - 17:29h

Netospt escreveu:

Salve Comunidade, sou novo por aqui e to com uma dúvida, poderiam me ajudar ?
Tenho um diretorio com vários arquivos, inclusive repetidos as iniciais, mudando apenas a numeração final :
MTST1X-TT00000-00001-20190412.123206
MTST1X-TT00000-00001-20190412.123207
MMDH1X-TT00000-00001-20190412.123206
ZBRE03-TT00000-00001-20190412.123206

Gostaria de copiar cada um deles identificado pelo primeiro campo para seus respectivos diretorios.
utilizei o comando : find -name "*TT00000*" | cut -d/ -f7 | sort -k1 | cut -c1-6 | uniq , para identificar os "ID" sem repetição ( pois os repetidos irão para o mesmo diretorio):
Comando find é retornado:
MTST1X
MMDH1X
ZBRE03

Minha dúvida, como inserir o cp *MTST1X* em cada um deles para seus respectivos diretórios diferentes ?
Eu jogo para um arquivo o resultado do "FIND" ? alguém tem alguma solução ?
Desde já, agradeço.
Abs

Boa tarde Neto.
Segue sugestão:

exec 3< <(ls -1);
while read line <&3; do
DIR=$(cut -d- -f1 <<<"$line");
#Se o "DIR" tem sempre 6 caracteres, use: ${line:0:6}, para definir o Diretório
[ ! -e $DIR ] && mkdir $DIR #Se $DIR Não EXISTE, É Criado!
#Exemplo: cp ${line} ${line:0:6}
echo "ARQ: \"${line}\" DIR=${DIR}";
done;
exec 3<&-

O comando acima, colocará o "conteúdo" de "ls -1", no descritor de arquivos "3",
O laço "while", pega linha a linha,
no exemplo, defini a var "DIR", e dou um echo para mostrar a saída....
É só adaptar, a var "line" é o arquivo, a "DIR", o diretório destino.....
Importante: => echo -e "$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')"
Att.: Marcelo Oliver

3. Re: Copiar todos os arquivos identificado pelas iniciais e jogar em diretórios diferentes [RESOLVIDO]

Newton
Netospt

(usa Outra)

Enviado em 26/06/2019 - 14:38h

msoliver escreveu:

Netospt escreveu:

Salve Comunidade, sou novo por aqui e to com uma dúvida, poderiam me ajudar ?
Tenho um diretorio com vários arquivos, inclusive repetidos as iniciais, mudando apenas a numeração final :
MTST1X-TT00000-00001-20190412.123206
MTST1X-TT00000-00001-20190412.123207
MMDH1X-TT00000-00001-20190412.123206
ZBRE03-TT00000-00001-20190412.123206

Gostaria de copiar cada um deles identificado pelo primeiro campo para seus respectivos diretorios.
utilizei o comando : find -name "*TT00000*" | cut -d/ -f7 | sort -k1 | cut -c1-6 | uniq , para identificar os "ID" sem repetição ( pois os repetidos irão para o mesmo diretorio):
Comando find é retornado:
MTST1X
MMDH1X
ZBRE03

Minha dúvida, como inserir o cp *MTST1X* em cada um deles para seus respectivos diretórios diferentes ?
Eu jogo para um arquivo o resultado do "FIND" ? alguém tem alguma solução ?
Desde já, agradeço.
Abs

Boa tarde Neto.
Segue sugestão:

exec 3< <(ls -1);
while read line <&3; do
DIR=$(cut -d- -f1 <<<"$line");
#Se o "DIR" tem sempre 6 caracteres, use: ${line:0:6}, para definir o Diretório
[ ! -e $DIR ] && mkdir $DIR #Se $DIR Não EXISTE, É Criado!
#Exemplo: cp ${line} ${line:0:6}
echo "ARQ: \"${line}\" DIR=${DIR}";
done;
exec 3<&-

O comando acima, colocará o "conteúdo" de "ls -1", no descritor de arquivos "3",
O laço "while", pega linha a linha,
no exemplo, defini a var "DIR", e dou um echo para mostrar a saída....
É só adaptar, a var "line" é o arquivo, a "DIR", o diretório destino.....
Importante: => echo -e "$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')"
Att.: Marcelo Oliver


Marcelo, Muito Obrigado. Pela Ajuda.

Abraços,
Newton






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts