我正在尝试识别脚本中从101-121运行的几个文件夹。编写该脚本是为了一次浏览一个特定的文件夹。
我得到的错误是:
command not found
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.
我的代码片段无效。
for i in 1;
do
case $i in
1)
projectfolder= `ls -l| grep "1*"` ;; #trying to identify individual folders 101-121
esac
done
不能很好地本地化文件夹。
答案 0 :(得分:2)
[
{
"article_id": "ABC123",
"document_title": "How to solve a Status",
"rank": 0
},
{
"article_id": "ABC678",
"document_title": "Make it Status two",
"rank": 1
}
]
是一件可怕的事情。首先,您可能打算编写projectfolder= `ls -l| grep "1*"`
(使用projectfolder=$(ls -l| grep "1*")
来提高可读性,但是重要的细节是$()
之后缺少空格),但这并不是一个好主意。为什么不只是=
?
答案 1 :(得分:1)
如果您的项目文件夹均遵循您描述的命名模式,则应使用大括号扩展将其扩展为数字101..121
,然后轻松地对其进行迭代:
for projectfolder in {101..121} ; do
[ -d "$projectfolder" ] && echo "'${projectfolder}' exists and is a directory."
done
括号扩展不检查任何目录的存在,因此要查看实际存在的目录,可以使用[ -d
测试每个目录。
在Brace Expansion
手册页中搜索bash(1)
,然后键入help test
以获取更多信息