使用增量名称将cd重命名为子目录

时间:2015-09-04 18:47:40

标签: bash file increment redhat cd

我在当前目录中有一个文件夹列表,名称为“S01.result”,最多为“S15.result”,以及其他内容。我正在尝试编写一个脚本,使用名称模式“sXX.result”cd进入每个文件夹,并在每个子目录中执行某些操作。

这就是我正在尝试的:

ext = ".result"
echo -n "Enter the number of your first subject."
read start
echo -n "Enter the number of your last subject. "
read end

for i in {start..end};
do
  if [[i < 10]]; then
    name = "s0$i&ext"
    echo $name
  else 
    name = "s$i$ext"
    echo $name
  fi

  #src is the path of current directory
  if [ -d "$src/$name" ]; then 
    cd "$src/$name"
    #do some other things here 
  fi
done

我是否正确连接文件名并正确找到子目录?有没有更好的方法呢?

1 个答案:

答案 0 :(得分:2)

您说您需要cd进入与模式匹配的每个文件夹,因此我们可以遍历当前目录中与所需模式匹配的子目录中的所有文件/文件夹。

#!/bin/bash

# Get current working directory
src=$(pwd)

# Pattern match as you described
regex="^s[0-9]{2}\.result$"

# Everything in current directory
for dir in "$src"/*; do

    # If this is a directory that matches the pattern, cd to it
    # Will early terminate on non-directories
    if test -d $dir && [[ $dir =~ $regex ]]; then
        cd "$dir"
        # Do some other things here 
    fi
done