Estou tentando criar uma estrutura de diretórios com base nos caracteres no nome do arquivo (o nome do arquivo inclui datas e horas em que o arquivo começou a ser gravado). Estou pronto para descobrir como ler determinadas "colunas" no meu nome de arquivo e imprimi-las. Mas agora não consigo descobrir como armazená-los como números inteiros. Aqui está o meu código que estou tentando adicionar:
#!/bin/bash
FILES=samplefilenames*
for file in ${FILES}; do
echo "${file}" | awk -F'[-_]' '{print $8}'
done
exit $ERRORS
Meus nomes de arquivos têm '-' e '_' neles, daí os delimitadores. Eu posso fazer isso imprimir com sucesso os valores que estou procurando. Mas não consigo atribuir esses valores como variáveis. Literalmente algo em torno das linhas de
tempNum=echo "${file}" | awk -F'[-_]' '{print $8}'
Qualquer ajuda seria apreciada.
EDITAR:
Exemplo de nome de arquivo de origem - samplefilenames_2017-10-31_12-23-13.csv (todos os nomes de arquivos têm carimbos de data / hora nesse formato). A estrutura de diretórios que pretendo fazer é adicionar código ao arquivo existente que os coloca aqui e, em vez de ter centenas de arquivos em um local, quero organizá-los em diretórios por data. Neste primeiro nível, pastas de janeiro, fevereiro e março .... (coluna 2) Em seguida, em cada um desses subdiretórios de cada um dos dias do mês (coluna 3) e depois em cada um deles, um para cada hora Naquele dia, coluna 4) Além disso, a coluna 8 no meu código é apenas do meu código, pois meus nomes de arquivos são realmente mais longos do que o meu exemplo. Estou ciente de que o valor precisa mudar de acordo.
fonte
Respostas:
Tente algo como isto:
Basicamente, analiso a data e a hora, transformamo-me em algo que o
date
comando pode consumir, usodate
para produzir uma representação em cadeia da estrutura de diretórios que você está procurando, crio esse diretório e movo o arquivo para esse diretório.O formato do diretório é:
Se você não deseja que o ano seja incluído, você pode omitir
%Y/
o parâmetro nodate
comandoObserve que eu não testei muito isso, YMMV.
fonte
fonte