Soy nuevo en bash, y estoy creando un script que recorre los archivos en un directorio y, según parte del nombre del archivo, hace algo con el archivo, hasta ahora tengo esto:
#!/bin/bash
DIR="/Users/me/Documents/import/*"
for f in "$DIR"
do
t=??????
echo "Loading $f into $t..."
done
entonces $f
generará algo como esto: /Users/me/Documents/import/time_dim-1272037430173
fuera de esto, quiero t
igualar time_dim
, el directorio puede ser de longitud variable y -1272037430173
es una longitud fija (es la marca de tiempo de Unix por cierto).
¿Cuál es la mejor manera de hacer esto?
bash
script
parsing
string-manipulation
Russ Bradberry
fuente
fuente
time_dim-1272037429351
+
modificada de\+
acuerdo con la documentación de expresión regular de GNU sed)t=
basename $ f | sed 's / - [^ -] * $ //' ``t
es la concatenación de todos de la misma antes de ejecutar el eco, así que conseguir algo como:Loading /Users/me/Documents/import/* into date_dim demographic_dim event_log_facts ip_dim location_dim referal_dim time_dim
en lugar deLoading /Users/me/Documents/import/time_dim-1272037430173 into time_dim...
, etc, etcfor f in $DIR
.... Personalmente, diríaDIR=/Users/me/Documents/import
(de modo que $ DIR es solo un directorio, como su nombre lo indica) y luego,for f in $DIR/*
pero eso es cuestión de gustos.también podrías hacer:
oeditado: leí mal la pregunta
fuente
la "mejor" forma, usando solo bash internos, :)
fuente