ksh:模式匹配数字

时间:2016-01-15 16:49:53

标签: regex ksh

我的ksh脚本的目的是从源目录中删除一组文件,如果它符合某些资格。

我的文件名遵循以下模式:/folder/folder/folder/SrcFiles/195758_load_yield_rates_data_req82565.dat

我需要的是从目录中删除给定用户req99999的文件以及大于或等于参数的ID。我的代码和sudo-code位于

之下
SrcDir=$1
User=$2
RunId=$3

files=$( ls ${SrcDir}*)

for i in $files ; do
  if [[ $i == *${User}*.dat ]]; then
    echo $i
    fileRunID = ## How do I extract the ids from the file?
    if [[ $fileRunID >= $RunID ]]; then
        echo Delete: echo $i
        rm -f $i
    fi
  fi
done

我的初始if语句有效,并且我向用户提供了文件。我的下一个计划是从文件中提取ID,然后在另一个if语句中使用它来匹配输入的RunID。

我该怎么办?

1 个答案:

答案 0 :(得分:1)

想出来

typeset -i RunId=$3

files=$( ls ${SrcDir}*)

for i in $files; do
 if [[ $i == *${User}*.dat ]]; then
    fileRunId=`echo $i | cut -b 32-37`
    typeset -i fileRunId
    if [[ $fileRunId -eq $RunId  ||  $fileRunId -gt $RunId ]]; then
        #echo Delete: $i
        rm -f $i
    fi
  fi
done