bash脚本中的通配符扩展

时间:2012-07-27 11:46:02

标签: bash

如果我在我的脚本中写这个字符串:

list=$(ls /path/to/some/files/*/*/*.dat)

它工作正常。但我需要的是

files="files/*/*/*.dat"
list=$(ls /path/to/some/${files})

它说

ls: /path/to/some/files/*/*/*.dat: No such file or directory

我该怎么做?

2 个答案:

答案 0 :(得分:14)

如果您只收到确实没有匹配的.dat文件的消息,请将其添加到您的脚本中:

shopt -s nullglob

如果没有匹配的文件,它将导致glob扩展为空列表,而不是按字面处理。

答案 1 :(得分:4)

试试这个:

list=$(find /path/to/some/files/ -mindepth 3 -maxdepth 3 -name '*.dat')