Непроверенные:
t=`basename $f | sed -e 's/-[0-9]\+$//'`
Я новичок в bash, и я создаю сценарий, который просматривает файлы в каталоге и на основе части имени файла, что-то делает с файлом, пока у меня есть это:
#!/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, кстати).
Каков наилучший способ сделать это?
Непроверенные:
t=`basename $f | sed -e 's/-[0-9]\+$//'`
Вы также можете сделать:
$ t=`basename $f|tr -d '[0-9-]'`
или же$ t=`basename $f|gawk -F- ''`
отредактировано: я неправильно понял вопрос
What is the best way to go about this?
«лучший» способ, используя только внутреннюю часть bash, :)
$ s=/Users/me/Documents/import/time_dim-1272037430173 $ echo $ /Users/me/Documents/import/time_dim $ t=$ $ echo $ time_dim