我在当前目录中有一个文件夹列表,名称为“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
我是否正确连接文件名并正确找到子目录?有没有更好的方法呢?
答案 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