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

 更新时间:2017年01月22日 15:50:22   作者:sinat_37394380  
本篇文章主要介绍了shell 遍历文件夹内所有文件并打印绝对路径,具有一定的参考价值,有兴趣的可以了解一下。

例如你有一个文件夹路径是 /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日志的问题中很有效,可以将所有日志文件遍历一遍,当然关于日志文件名的过滤这里要读者自己实现。

相关文章

  • linux shell的输出效果修改方法(界面颜色)

    linux shell的输出效果修改方法(界面颜色)

    文本终端的颜色可以使用“ANSI非常规字符序列”来生成,有时候想个性化输出,就可以参考下面的方法
    2013-01-01
  • ssh,scp自动登陆的实现方法

    ssh,scp自动登陆的实现方法

    这篇文章主要介绍ssh,scp自动登陆的实现方法,需要的朋友可以参考下
    2013-02-02
  • 一键备份gitolite服务器的Shell脚本

    一键备份gitolite服务器的Shell脚本

    这篇文章主要介绍了一键备份gitolite服务器的Shell脚本,需要的朋友可以参考下
    2014-09-09
  • shell实现自动备份mysql、整站数据的两个脚本分享

    shell实现自动备份mysql、整站数据的两个脚本分享

    这篇文章主要介绍了shell实现自动备份mysql、整站数据的两个脚本分享,使用了cron实现实现定时备份,并会自动删除N天前的备份,以及自动FTP上传到别的服务器,需要的朋友可以参考下
    2014-06-06
  • 深入浅出Shell编程 Shell变量介绍

    深入浅出Shell编程 Shell变量介绍

    先不要管Shell的版本,来看看Shell 变量,在Shell中有三种变量:系统变量,环境变量,用户变量。其中用户变量在编程过程中使用最多,系统变量在对参数判断和命令返回值判断会使用,环境变量主要是在程序运行的时候需要设置。
    2013-01-01
  • Linux Shell任务控制的实现示例

    Linux Shell任务控制的实现示例

    本文主要介绍了Linux Shell任务控制的实现示例,包括向脚本发送信号、修改脚本的优先级以及在脚本运行时从暂停切换到运行模式,感兴趣的可以了解一下
    2024-01-01
  • Linux Shell脚本系列教程(三):变量和环境变量

    Linux Shell脚本系列教程(三):变量和环境变量

    这篇文章主要介绍了Linux Shell脚本系列教程(三):变量和环境变量,本文讲解了普通变量、获取字符串的长度、环境变量等内容,需要的朋友可以参考下
    2015-06-06
  • Linux Shell中三种引号的用法及区别

    Linux Shell中三种引号的用法及区别

    Linux Shell中有三种引号,分别为双引号(" ")、单引号(' ')以及反引号(` `)。那么这三种引号有什么区别呢?下面脚本之家小编给大家介绍下用法及区别,需要的的朋友参考下
    2017-03-03
  • linux tar命令简介

    linux tar命令简介

    tar命令用来打包,解包和压缩。这篇文章主要介绍了linux tar命令简介,需要的朋友可以参考下
    2017-10-10
  • Shell脚本一次读取文件中一行的2种写法

    Shell脚本一次读取文件中一行的2种写法

    这篇文章主要介绍了Shell脚本一次读取文件中一行的2种写法,本文还同时讲解了Shell读取文本文件的2种方法,需要的朋友可以参考下
    2015-04-04

最新评论