Eu sou novo para bash, e estou criando um script que percorre os arquivos em um diretório e com base em parte do nome do arquivo, faz algo com o arquivo, até agora eu tenho isso:
#!/bin/bash
DIR="/Users/me/Documents/import/*"
for f in "$DIR"
do
t=??????
echo "Loading $f into $t..."
done
assim $f
irá produzir algo como isto: /Users/me/Documents/import/time_dim-1272037430173
fora disso, eu quero t
igualar time_dim
, o diretório pode ser de tamanho variável e -1272037430173
é um tamanho fixo (é o timestamp do unix btw).
Qual é a melhor maneira de fazer isso?
bash
script
parsing
string-manipulation
Russ Bradberry
fonte
fonte
time_dim-1272037429351
+
mudou para\+
de acordo com a documentação de expressão regular do GNU sed)t=
nome de base $ f | sed 's / - [^ -] * $ //' ``t
está concatenando tudo isso antes de executar o eco, então eu recebo algo como:Loading /Users/me/Documents/import/* into date_dim demographic_dim event_log_facts ip_dim location_dim referal_dim time_dim
ao invés deLoading /Users/me/Documents/import/time_dim-1272037430173 into time_dim...
etc etcfor f in $DIR
.... Pessoalmente, eu diriaDIR=/Users/me/Documents/import
(de modo que $ DIR é apenas um diretório, como o nome sugere) e depoisfor f in $DIR/*
mas isso é uma questão de gosto.você também pode fazer:
ou
editado: eu interpretei mal a questão
fonte
o "melhor" caminho, usando apenas bash internals, :)
fonte