详解shell 遍历文件夹内所有文件并打印绝对路径

发布时间 - 2026-01-10 22:44:06    点击率:

例如你有一个文件夹路径是 /wls,如果想要遍历这个文件夹内的所有文件,并将它们保存到数组中,利用shell你可以这样做

for file in /wls/*
do
    if test -f $file
    then
        arr=(${arr[*]} $file)
    fi
done
echo ${arr[@]}

这样就可以遍历wls文件夹下的所有文件并把它们的绝对路径存在arr这个数组中,但这还是不够的,因为文件夹中可能会有多个子文件夹,如果只过滤文件会遗漏掉子文件夹中的文件,所以需要扩展上面的方法,如果我们只考虑两级目录的话可以这样写

for file in /wls/*
do
    if test -f $file
    then
        arr=(${arr[*]} $file)
    else
        for subfile in $file
            do
                if test -f $subfile
                then
                    arr=(${arr[*]} $subfile)
                fi
            done
    fi
done
echo ${arr[@]}

这样就可以把目标文件夹下的两级目录内所有文件的绝对路径获取到,那么如果有多级子目录的情况呢,这就要求我们去写一个function来协助我们

function getdir(){
    echo $1
    for file in $1/*
    do
    if test -f $file
    then
        echo $file
        arr=(${arr[*]} $file)
    else
        getdir $file
    fi
    done
}
getdir /wls
echo ${arr[@]}

通过递归调用getdir就可以实现将wls文件夹内所有文件的绝对路径保存到数组中。

以上的方法在处理NAS日志的问题中很有效,可以将所有日志文件遍历一遍,当然关于日志文件名的过滤这里要读者自己实现。


# shell脚本遍历文件夹  # shell  # 遍历文件夹  # shell获取绝对路径  # bash shell获取当前脚本的绝对路径(pwd/readlink)  # Shell获取路径操作(dirname $0 pwd)的实现  # Python IDLE或shell中切换路径的操作  # linux shell 路径截取正则表达式  # Shell中获取脚本所在目录绝对路径的方法  # Debian 终端Shell命令行长路径改为短路径的步骤  # 遍历  # 就可以  # 组中  # 递归  # 两级  # 你可以  # 夹中  # 你有  # 一遍  # 这就  # 有多  # 这样做  # 并将  # 但这  # 并把  # 中很  # 这个数  # br  # pre  # NAS 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  如何快速生成ASP一键建站模板并优化安全性?  Python并发异常传播_错误处理解析【教程】  如何用wdcp快速搭建高效网站?  如何快速生成橙子建站落地页链接?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  网站制作价目表怎么做,珍爱网婚介费用多少?  百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧  Laravel如何实现多对多模型关联?(Eloquent教程)  详解MySQL数据库的安装与密码配置  Python高阶函数应用_函数作为参数说明【指导】  如何在IIS中新建站点并解决端口绑定冲突?  Laravel Session怎么存储_Laravel Session驱动配置详解  html如何与html链接_实现多个HTML页面互相链接【互相】  实例解析angularjs的filter过滤器  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  高防服务器租用首荐平台,企业级优惠套餐快速部署  如何正确下载安装西数主机建站助手?  百度输入法ai组件怎么删除 百度输入法ai组件移除工具  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  Laravel如何与Pusher实现实时通信?(WebSocket示例)  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  如何做网站制作流程,*游戏网站怎么搭建?  Linux系统命令中screen命令详解  详解阿里云nginx服务器多站点的配置  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  黑客入侵网站服务器的常见手法有哪些?  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  文字头像制作网站推荐软件,醒图能自动配文字吗?  Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】  通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】  Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  Internet Explorer官网直接进入 IE浏览器在线体验版网址  在线教育网站制作平台,山西立德教育官网?  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  Laravel如何使用withoutEvents方法临时禁用模型事件  如何基于云服务器快速搭建网站及云盘系统?  html5audio标签播放结束怎么触发事件_onended回调方法【教程】  laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法  济南网站建设制作公司,室内设计网站一般都有哪些功能?  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  北京网站制作的公司有哪些,北京白云观官方网站?  使用spring连接及操作mongodb3.0实例  如何打造高效商业网站?建站目的决定转化率  简单实现Android验证码  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  如何为不同团队 ID 动态生成多个“认领值班”按钮  Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】