首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bash4 -在regex过滤器上创建目录内容数组

bash4 -在regex过滤器上创建目录内容数组
EN

Stack Overflow用户
提问于 2014-08-11 18:21:54
回答 1查看 140关注 0票数 1

寻找一种在筛选目录中基于regex创建bash数组的方法。

例如,我会:

代码语言:javascript
复制
A. local -a arr=( "$1"/* ); arr=( "${arr[@]##*/} );
- Creates array of all contents of the path sent in $1.
代码语言:javascript
复制
B. local -a arr=( "$1"/*"$2" ); arr=( "${arr[@]##*/}" );
- Creates array on filter expression in $2.

(我不知道为什么*没有出现在B中的"$1"/*"$2"中,如果我把2 **s都放出来了!)

但它只适用于一个简单的表达式:示例'.pub‘-列出所有公钥。

但是,如果我发送‘z.*. zip’来查找以'z.‘开头的所有zip文件。不管用。

我甚至试着把*"$2"arr=( "$1"/*"$2" )上拿出来。*"$2"没有出现!

你的帮助将不胜感激。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-11 18:46:10

全局不会在双引号中展开。你必须收回它:

代码语言:javascript
复制
local -a arr=( "$1"/*$2 ); 

为了避免空白的问题,您可以首先使用IFS=""来抑制单词分裂,同时仍然对未引用的变量进行字词扩展。

下面是一个示例调用:

代码语言:javascript
复制
$ cat script

foo() {
  local -a arr=( "$1"/*$2 );
  echo "Matching files: " "${arr[@]}"
}

foo "." "z.*.zip"

$ ls
lobsters.png  pelican.zip  script  z.bar.zip  z.cow.txt

$ bash script
Matching files:  ./z.bar.zip

$
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25249898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档