您的位置:

Shell遍历目录下所有文件的详细阐述

一、遍历文件夹所有文件

#!/bin/bash
# 遍历文件夹下所有文件
function list_files(){
    # 获取传入参数的文件路径
    local file_path=$1
    #遍历文件夹
    for file in ${file_path}/*
    do
        #如果是目录则递归调用函数,否则打印文件路径
        if [ -d $file ]
        then
            list_files $file
        else
            echo $file
        fi
    done
}
#调用函数,传入文件夹路径
list_files "/path/to/folder"

遍历文件夹下所有文件,是shell中经常使用的一个操作。该操作是通过递归方式实现,对于目录进行递归(调用自身),对于文件则直接输出文件路径。递归遍历目录下所有文件,类似于树的数据结构遍历操作。

二、Shell获取目录下所有文件名

#!/bin/bash
# 获取目录下所有文件名到数组中
function get_files(){
    local file_path=$1
    local file_list=($(ls ${file_path}))
    echo ${file_list[@]}
}
#调用函数,传入文件夹路径
get_files "/path/to/folder"

获取目录下所有文件名是shell开发中实现某些操作的先决条件之一,例如文件拷贝、文件压缩等等。该操作是通过调用ls命令,将返回结果赋值给数组变量,实现的。

三、Shell遍历所有目录和文件

#!/bin/bash
# 遍历文件夹下所有文件和目录
function list_files(){
    # 获取传入参数的文件路径
    local file_path=$1
    #遍历文件夹
    for file in ${file_path}/*
    do
        #如果是目录则递归调用函数,否则打印文件路径
        if [ -d $file ]
        then
            echo "directory: "$file
            list_files $file
        else
            echo "file: "$file
        fi
    done
}
#调用函数,传入文件夹路径
list_files "/path/to/folder"

遍历所有目录和文件可以用于查找某些特定的文件或者目录,例如查找某些重要文件是否存在于某个目录下。该操作与遍历文件夹下所有文件类似,只不过递归调用的时候会打印目录的信息。