展开文件列表,包括在文件中定义的 glob

展开文件列表,包括在文件中定义的 glob

我正在使用 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(类似于dotglobextglob)启用。您还可以使用 检查该值shopt globstar

(或者shopt |grep glob回应set -o |grep glob评论中的建议;注意shopt和之间的区别set -o。)

相关内容