Как я анализирую строку?

Я плохо знаком с ударом, и я создаю сценарий, что циклы через файлы в каталоге и на основе части имени файла, делает что-то с файлом, до сих пор у меня есть это:

#!/bin/bash
DIR="/Users/me/Documents/import/*"
for f in "$DIR"
do
  t=??????
  echo "Loading $f into $t..."
done

так $f произведет что-то вроде этого: /Users/me/Documents/import/time_dim-1272037430173 из этого я хочу t равняться time_dim, каталог может быть переменной длиной и -1272037430173 фиксированная длина (это - метка времени Unix btw).

Что лучший способ состоит в том, чтобы пойти об этом?

1
задан 23.04.2010, 21:18

3 ответа

Непротестированный:

t=`basename $f | sed -e 's/-[0-9]\+$//'`
4
ответ дан 12.12.2019, 09:21

Вы могли также сделать:

$ t=`basename $f|tr -d '[0-9-]'`
или

$ t=`basename $f|gawk -F- '{print $1;}'`

отредактированный: я неправильно читал вопрос

0
ответ дан 12.12.2019, 09:21
What is the best way to go about this? 

"лучший" путь, с помощью просто колотит внутренности, :)

$ s=/Users/me/Documents/import/time_dim-1272037430173
$  echo ${s%-*}
/Users/me/Documents/import/time_dim
$ t=${s%-*}
$ echo ${t##*/}
time_dim
0
ответ дан 12.12.2019, 09:21

Теги

Похожие вопросы