![展开文件列表,包括在文件中定义的 glob](https://linux22.com/image/227827/%E5%B1%95%E5%BC%80%E6%96%87%E4%BB%B6%E5%88%97%E8%A1%A8%EF%BC%8C%E5%8C%85%E6%8B%AC%E5%9C%A8%E6%96%87%E4%BB%B6%E4%B8%AD%E5%AE%9A%E4%B9%89%E7%9A%84%20glob.png)
我正在使用 bash。假设我有一个名为 的文件filelist
,其中包含文件列表:
stuff/**/*.csv # to keep it simple (without loops), assume just one entry
#*.txt
#foo.md
#bar.bin
我想扩展一下:
ls $(cat filelist)
我得到:
ls: 无法访问 'stuff/**/*.csv': 没有这样的文件或目录
我想要的是将其扩展为一个文件列表,我可以将其传输到我的主应用程序进行处理。我怎样才能做到这一点?
答案1
我的猜测是您希望**
进行递归通配符,对吧?但 Bash 中默认未启用该功能,需要通过shopt -s globstar
(类似于dotglob
和extglob
)启用。您还可以使用 检查该值shopt globstar
。
(或者shopt |grep glob
回应set -o |grep glob
评论中的建议;注意shopt
和之间的区别set -o
。)