You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash中如何根据参数数组过滤ls -l输出匹配对应文件所属用户

解决方案

你可以通过将目标文件名存入Bash关联数组实现快速匹配,修改后的代码如下:

# 先将目标数组转换为关联数组,用于快速判断元素存在性
declare -A match_set
for v in "${values[@]}"; do
    match_set["$v"]=1
done

# 扩展原有解析逻辑,增加匹配判断
ls -l | while read a b c d e f g h j; do
    # 仅当文件名在匹配集合中时输出
    [[ ${match_set["$j"]} ]] && echo "$c $j"
done

如果你使用的Bash版本低于4.0不支持关联数组,可以用遍历数组的方式实现匹配:

ls -l | while read a b c d e f g h j; do
    for v in "${values[@]}"; do
        [[ "$j" == "$v" ]] && echo "$c $j" && break
    fi
done

注意:如果你的文件名包含空格、换行、制表符等特殊字符,不建议直接解析ls -l输出,可以改用stat或者find命令获取文件属性更稳妥。

内容的提问来源于stack exchange,提问作者CroatiaHR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 18:45:01