Shell递归遍历目录下文件

本文介绍了一个用于遍历Linux指定目录及其子目录下所有文件的Shell脚本。该脚本能够显示每个文件的名称,并通过递归方式深入每个子目录继续搜索。如果未指定目录,则默认使用当前目录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

遍历linux某目录下的所有文件

#!/bin/bash

# $1是运行脚本时,输入的第一个参数,这里指的是使用者希望搜索的目录
# 下面的代码是对目录进行判断,如果为空则使用脚本所在的目录;否则,搜索用户输入的目录
if [[ -z "$1" ]] || [[ ! -d "$1" ]]; then
    echo "The directory is empty or not exist!"
    echo "It will use the current directory."
    nowdir=$(pwd)
else
    nowdir=$(cd $1; pwd)
fi
echo "$nowdir"

# 递归函数的实现
function SearchCfile()
{
    cd $1
    #这里可以修改为判断文件类型,如.c,.java等等文件类型,修改一下grep条件就可以了
    cfilelist=$(ls -l | grep "^-" | awk '{print $9}')
    for cfilename in $cfilelist
    do
        echo $cfilename
    done
# 遍历当前目录,当判断其为目录时,则进入该目录递归调用该函数;
    dirlist=$(ls)
    for dirname in $dirlist      
    do
        if [[ -d "$dirname" ]];then
            cd $dirname
            #SearchCfile 这里有bug,跳转到根目录了
            #这里把当前的目录作为参数输入
            SearchCfile $(pwd)
            cd ..
        fi;
    done;
}

# 调用上述递归调用函数
SearchCfile $nowdir

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值