Naw*_*que 7 bash filenames wildcards
假设我有一个目录,在该目录下有 3 个文件:file1.txt、file2.txt 和 file3.txt。
现在如何用这些文件名填充数组(我只知道所有文件都有特定的前缀,即文件,文件后可以是 1,2,3 等。
来自 Greg 的 Wiki:数组上的 Bash 指南条目:
files=()
while read -r -d $'\0'; do
files+=("$REPLY")
done < <(find *.txt -print0)Run Code Online (Sandbox Code Playgroud)
页面上有对数组的详细说明,将这个构造逐个元素分解;值得一读。
如果这些文件都在同一目录中,那么除了 jasonwryan 的答案之外,您还有其他一些选择。
使用 glob:
files=(file[0-9].txt)
Run Code Online (Sandbox Code Playgroud)
只匹配问题中的示例文件:
files=(file[1-3].txt)
Run Code Online (Sandbox Code Playgroud)
如果你有 bash 版本 4 或更高版本,你甚至可以递归地 glob:
shopt -s globstar
files=(**/file[0-9].txt)
Run Code Online (Sandbox Code Playgroud)
使用大括号扩展将数组限制为仅示例文件:
files=(file{1..3}.txt)
Run Code Online (Sandbox Code Playgroud)
与其他两个示例不同,这将使用文件名填充数组,即使它们不存在。出于这个原因,可能不需要支架扩展。
| 归档时间: |
|
| 查看次数: |
8371 次 |
| 最近记录: |