Unix下通过特征字符串获取文件名并赋值变量的实现方法
实现方法
方法1:直接使用文件名通配符(推荐场景:已知目录仅存在一个目标文件)
如果确定当前目录里只有一个末尾带string特征的文件,用bash原生通配符最简洁:
file1=*string my_command_line_tool --input "$file1"
用双引号包裹变量是为了兼容文件名含空格、特殊字符的情况,避免参数被错误拆分。
方法2:通过find命令捕获结果(适用复杂搜索场景)
如果需要更精准的搜索规则(比如排除目录、限定文件类型),要执行find命令并捕获其输出,而非把命令本身赋值给变量:
# 用$()执行命令并获取输出,可读性比反引号更好 file1=$(find . -maxdepth 1 -name "*string" -type f) my_command_line_tool --input "$file1"
其中-type f用来确保只匹配文件,排除同名目录。
额外提示:增加异常判断
如果需要处理“未找到目标文件”的情况,可以添加判断逻辑:
file1=*string if [ -f "$file1" ]; then my_command_line_tool --input "$file1" else echo "未找到符合条件的文件" >&2 exit 1 fi
内容的提问来源于stack exchange,提问作者Jillian Ness
相关产品推荐
相关产品推荐

