我想运行下面的代码,并使用grep在一个路径尚未确定的文件中搜索“LARGE_NAME”。
- 文件名和文件夹名都是字母表[a-z]中的一个不同字母;
- 文件没有文件扩展名。例如:“$dir/$letter1/$letter2”,$letter2是文件;
- 如果没有更多要搜索的子文件夹,我知道我找到了路径。
。
./query.sh LARGE_NAME
最终文件可能位于:
$dir/$letter1
$dir/$letter1/$letter2
$dir/$letter1/$letter2/$letter3/
.... so on
其中:
$letter1 = L
$letter2 = A
$letter3 = R
.... so on
我想优化我的代码,工作,但有太多的嵌套IF。下面是一个例子,只有3个字母的搜索:
query.sh 档案:
#!/opt/homebrew/bin/bash
dir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
letter1=$(echo ${1,,}|cut -b1)
if [ -f "$dir/$letter1" ]; then
grep -ai "^$1" "$dir/$letter1"
else
letter2=$(echo ${1,,}|cut -b2)
if [ -f "$dir/$letter1/$letter2" ]; then
grep -ai "^$1" "$dir/$letter1/$letter2"
else
letter3=$(echo ${1,,}|cut -b3)
if [ -f "$dir/$letter1/$letter2/$letter3" ]; then
grep -ai "^$1" "$dir/$letter1/$letter2/$letter3"
fi
fi
fi
如何重写代码以搜索多达50个子文件夹,直到找到包含要grep的文件的最后一个子文件夹?
1条答案
按热度按时间gpnt7bae1#
因此,累积地构建路径,一次一个斜线和字母。