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

14 篇文章 0 订阅
背景介绍

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
脚本运行界面

image.png

脚本执行结果

image.png


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值