我有一个名为mydir
的目录,其中包含以下文件:
_Sidebar.md
Jack.md
Amy.md
Robert.md
(Jack) blah blah.md
(Jack) foo bar.md
(Amy) etc etc etc.md
...
_Sidebar.md
文件包含我所关注的所有名称的列表,如下所示:
* [[Jack]]
* [[Amy]]
* [[Robert]]
这个想法是:获取_Sidebar.md
的内容,获取名称列表,循环遍历每个名称:
(THATNAME)
THATNAME.md
所以最后,Jack.md
会这样读:
(Jack) blah blah.md
(Jack) foo bar.md
我想用bash脚本做到这一点!
这是我到目前为止的代码:
prefixes=($( cat mydir/_Sidebar.md | grep -oP '(?<=\[\[).+(?=\]\])' ))
length=${#prefixes[@]}
for ((i = 0; i != length; i++)); do
echo "Prefix $i: '${prefixes[i]}'"
pref=${prefixes[i]}
pages=$( eval "ls 'mydir/\(*'" )
echo "$pages"
done
$prefixes
数组正确识别名称。其中带有ls
命令的行现在不完整;作为一个开始,我希望它给我所有以(
开头的文件,但我得到一条错误消息:
ls: cannot access mydir/\(*: No such file or directory
但是当我运行命令ls mydir/\(*
时,我确实得到了正确的结果。在使用动态参数调用ls
命令时,我在做错了什么?
答案 0 :(得分:1)
要访问带括号的页面列表:
pages=( "$mydir"/*\(*\)* ) # using glob
printf '%s\n' "${pages[@]}"
然后迭代页面:
for page in "${pages[@]}"; do
echo "$page"
done