我正在使用 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
。)