我有一堆像这样命名的文件:
text 01 (blabla) other text
text 02 (whatever) other text
.
.
text 025 (etc) other tex
some text 1 (20031020) other text
some text 2 (20031022) other text
.
.
some text 10 (20031025) other text
some new text 01 other text
.
.
.
some new text 200 other text
我想从文件名中只提取第一个数字之前的单词,所以从上面的例子我想得到:
text
some text
some new text
我想这样做是为了根据文件名移动所属文件夹中的每个文件(如果不存在,则创建文件夹)。
我想用bash做这个,我知道可以使用正则表达式来完成但是我不知道怎么做,我只看到了字段由已知字符分隔的示例,而在这种情况下,限制是一个空格后跟任意数字。
答案 0 :(得分:3)
使用${variable%%pattern}
(此删除后缀模式)。
$ filename='text 01 (blabla) other text'
$ echo ${filename%%[0-9]*}
text
答案 1 :(得分:-1)
您可以使用sed:
printf "%s\n" *[[:space:]][0-9]* | sed 's/^\([^0-9]*\) [0-9].*$/\1/'