交互式shell脚本遍历文件目录下的所有文件和目录(绝对路径)

Posted isk--cosann

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了交互式shell脚本遍历文件目录下的所有文件和目录(绝对路径)相关的知识,希望对你有一定的参考价值。

背景介绍

Linux系统想要获取一个工作目录下的文件和目录不是很方便,也没用现成的命令可以直接使用,
因此使用Shell实现了一个简单地可以将目标目录下的文件和目录输出打印出来的脚本。

实现代码

#!/bin/bash
#!/bin/bash
#version:2.0
#author:cosann
#date:20220709
#description:
#1.修复显示不全问题
#2.加入文件目录判断检测
#3.优化输出显示

while true
do
    #打印脚本介绍信息
    echo -e "\\n===================================================" 
    echo -e "====该脚本可以遍历指定文件目录下的所有文件和目录==="  
    echo -e "===================================================" 
    echo -e "1. 输入0即可退出程序》》》"

    #交互式用户输入要操作的目标文件目录
    read -p "2. 请输入要遍历的目录: " dir

    #定义遍历目录函数
        function getdir()

                #循环控制
                for i in `ls $1`
                do
                    
                    all_dir=$1"/"$i
                    
                    #echo $all_dir
                    if [ -d $all_dir ]
                    then
                        #将文件目录信息追加至dir_result.txt
                        echo -e "Dir:\\t$all_dir" >> ./dir_result.txt

                        #再次调用函数对子目录的文件进行遍历
                        getdir $all_dir 
                    else
                        #将文件信息追加至dir_result.txt
                        echo -e "File:\\t$all_dir"  >> ./dir_result.txt
                    fi 
                done
            

    
   
    #键盘输入判断(0退出程序,目录是否存在检测)
    if [[ "$dir" == "0" ]]
    then
        #退出程序
        echo -e "\\n###!!!感谢使用,再见!!!###"

        #删除dir_result.txt文件
        rm -f ./dir_result.txt &> /dev/null 

        exit 0

    elif [ -d "$dir" -a ! -z "$dir" ]
        then
            #删除dir_result.txt,重置dir_result.txt内容,确保在追加时没有数据
            rm -f ./dir_result.txt &> /dev/null

            #对用户输入的目标文件目录,调用函数进行遍历
            getdir $dir

            #输出结果信息
            cat_num=`cat ./dir_result.txt | wc -l`

            #打印输出控制
            if [[ $cat_num -ge "40" ]]
            then
                echo -e "\\033[32m $dir目录遍历结果: \\033[0m"
                cat ./dir_result.txt | more
            else
                echo -e "\\033[32m $dir目录遍历结果: \\033[0m"
                cat ./dir_result.txt
            fi
    else
        echo -e "\\033[41;37m 路径不存在,请重新输入!!! \\033[0m"

    fi 
done

使用案例

#将代码内容写入并创建一个脚本文件,例如dir.sh

#添加执行权限
chmod +x dir.sh

#执行脚本
./dir.sh

脚本运行界面

脚本执行结果


代码不足之处,欢迎提出交流学习~

以上是关于交互式shell脚本遍历文件目录下的所有文件和目录(绝对路径)的主要内容,如果未能解决你的问题,请参考以下文章

用shell脚本递归遍历某个目录下的所有文件并移动到某个指定的目录中

shell脚本,怎样将某个目录下的所有文件的后缀改为.bak

Python中如何遍历指定目录下的所有文件?

如何使用perl遍历一个目录下的所有文件

shell脚本如何判断目录下的多个文件夹是不是为空

如何在linux中使用shell脚本遍历指定目录的文件,将创建时间大于指定时间的文件,复制到指定目录下。