假设我有一个目录,下面有3个文件,名为:file1.txt、file2.txt和file3.txt。
现在我怎样才能用这些文件名填充一个数组(我只知道所有文件都有一定的前缀,即文件,文件之后可以是1、2、3等。
答案1
来自 Greg 的 Wiki:Bash 指南数组上的条目:
files=()
while read -r -d $'\0'; do
files+=("$REPLY")
done < <(find *.txt -print0)
页面上有对数组的详细解释,逐个元素地分解了这个结构;值得全文阅读。
答案2
如果文件都在同一目录中,除了 jasonwryan 的答案之外,您还有其他一些选择。
使用全局:
files=(file[0-9].txt)
仅匹配问题中的示例文件:
files=(file[1-3].txt)
如果您有 bash 版本 4 或更高版本,您甚至可以递归地进行 glob 操作:
shopt -s globstar
files=(**/file[0-9].txt)
使用大括号扩展将数组限制为仅包含示例文件:
files=(file{1..3}.txt)
与其他两个示例不同,这将使用文件名填充数组,即使它们不存在。因此,支架扩展可能并不理想。