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 $fgenerará algo como esto: /Users/me/Documents/import/time_dim-1272037430173 fuera de esto, quiero tigualar time_dim, el directorio puede ser de longitud variable y -1272037430173es 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 / - [^ -] * $ //' ``tes 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_dimen 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:
o$ t=`basename $f|gawk -F- '{print $1;}'`editado: leí mal la pregunta
fuente
la "mejor" forma, usando solo bash internos, :)
fuente