从文件名中提取数字

时间:2015-08-31 11:36:55

标签: bash

我正在做一个bash脚本,它可以自动为我运行模拟。为了开始模拟,这个其他脚本需要一个输入,这应该由文件夹的名称决定。

所以,如果我有一个文件夹名称No200,那么我想提取数字200.到目前为止,我所拥有的是

PedsDirs=`find . -type d -maxdepth 1`
for dir in $PedsDirs
do
        if [ $dir != "." ]; then
            NoOfPeds = "Number appearing in the name dir" 
        fi
done

2 个答案:

答案 0 :(得分:2)

$ dir="No200"
$ echo "${dir#No}"
200

一般情况下,要删除前缀,请使用${variable-name#prefix};删除后缀:${variable-name%suffix}

额外提示:避免使用find。它引入了许多问题,尤其是当您的文件/目录包含空格时。请改用bash内置的glob功能:

for dir in No*/           # Loops over all directories starting with 'No'.
do
    dir="${dir%/}"        # Removes the trailing slash from the directory name.
    NoOfPeds="${dir#No}"  # Removes the 'No' prefix.
done

另外,请尝试始终在变量名称周围使用引号以避免意外扩展(即使用"$dir"而不是$dir)。

答案 1 :(得分:0)

要小心,因为你必须将=加入bash中的变量名。要获得 号码,您可以执行以下操作:

NoOfPeds=`echo $dir | tr -d -c 0-9`

(即删除任何不是数字的字符)。所有数字都将在NoOfPeds