我有一个名为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命令时,我做错了什么?
发布于 2016-10-10 19:29:57
若要访问带有括号的页面列表,请执行以下操作:
pages=( "$mydir"/*\(*\)* ) # using glob
printf '%s\n' "${pages[@]}"然后遍历页面:
for page in "${pages[@]}"; do
echo "$page"
done并停止使用邪恶版=)
https://stackoverflow.com/questions/39965289
复制相似问题