相关疑难解决方法(0)

如何获取与“*”通配符匹配的文件名的子字符串?

假设我有一个包含以下文件的目录(以及其他文件):

touch doc-mike.txt doc-jane.txt doc-susan.txt
Run Code Online (Sandbox Code Playgroud)

我可以使用以下结构在脚本中使用这些文件执行某些操作:

for fname in doc-*.txt; do
    echo input: ${fname}
done
Run Code Online (Sandbox Code Playgroud)

但是如果我想获得与通配符匹配的文件名的子字符串,我必须跳过一些丑陋的圈套:

for fname in doc-*.txt; do
    wildcard=${fname#doc-}
    wildcard=${wildcard%.txt}

    echo input: ${fname} output: output-${wildcard}.results
done
Run Code Online (Sandbox Code Playgroud)

那个有效:

input: doc-jane.txt output: output-jane.results
input: doc-mike.txt output: output-mike.results
input: doc-susan.txt output: output-susan.results
Run Code Online (Sandbox Code Playgroud)

但我觉得必须有更好/更简单的方法来获取与"*"glob 通配符匹配的子字符串

bash wildcards

5
推荐指数
1
解决办法
2142
查看次数

标签 统计

bash ×1

wildcards ×1