`

Linux shell递归遍历目录

 
阅读更多

Linux shell递归遍历目录

Linux上可以通过如下shell脚本遍历指定目录:

#!/bin/bash

function list_file()
{
    local last_dir=$(pwd)
    if [[ $# -ne 1 ]]; then
        echo "usage `basename $0` <directory> "
    fi
    
    cd $1
    for tmpfile in $(ls)
    do
        if [ -d $tmpfile ]; then
            echo "directory: $tmpfile"		
            list_file $tmpfile
        else
            echo "file: $tmpfile"
        fi
    done
    cd $last_dir
}

if [[ $# -ne 1 ]]; then
    echo "usage `basename $0` <directory> "
    exit
fi

list_file $1

执行效果如下:

yuxuecheng@linux:~/shellSource> ls -AlR ../bin/
../bin/:
total 32
-rwxr-xr-x 1 yuxuecheng users  277 Mar 19  2015 mklink.sh
-rwxr-xr-x 1 yuxuecheng users 5001 Mar 19  2015 modify_ini.sh
drwxr-xr-x 3 yuxuecheng users 4096 Mar 19  2015 test
-rw-r--r-- 1 yuxuecheng users   72 Mar 19  2015 test.ini
-rw-r--r-- 1 yuxuecheng users    0 Mar 18  2015 test.txt
-rwxr-xr-x 1 yuxuecheng users  686 Mar 19  2015 unlink_symbol.sh
-rwxr--r-- 1 root       root   902 Feb 28  2015 vm_init_para.ini
-rw-r--r-- 1 yuxuecheng users  922 Mar 19  2015 vm_init_para.ini.temp

../bin/test:
total 4
drwxr-xr-x 2 yuxuecheng users 4096 Mar 19  2015 test2

../bin/test/test2:
total 0
yuxuecheng@linux:~/shellSource> ./list_file.sh ../bin/
file: mklink.sh
file: modify_ini.sh
directory: test
directory: test2
file: test.ini
file: test.txt
file: unlink_symbol.sh
file: vm_init_para.ini
file: vm_init_para.ini.temp
yuxuecheng@linux:~/shellSource> 

 

分享到:
评论

相关推荐

    【shell】遍历文件夹下所有文件

    对linux命令tree的简单实现,遍历指定文件夹下的所有文件

    Linux 遍历目录

    在Linux操作系统中,遍历目录是一项基础且至关重要的任务,尤其对于系统管理员和开发者来说,了解如何有效地遍历和操作文件系统是必备技能。Linux是一个类UNIX系统,其文件系统结构遵循一种层次化的树状模型,从根...

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

    ### 五、递归遍历详解 1. **函数定义**: ```bash function getdir() { # 函数体... } ``` `getdir`函数接收一个参数,即需要遍历的目录路径。 2. **内部循环**: ```bash for file in "$1"/* do # 循环体...

    Shell脚本遍历目录并批量修改文件编码

    ### Shell脚本遍历目录并批量修改文件编码 在IT领域中,特别是在处理跨平台文件时,经常会遇到编码格式不一致的问题。例如,从Windows环境移植到Linux环境时,文件编码可能需要从GBK转换为UTF-8。通过编写Shell脚本...

    2018211582-李志毅-第二次作业1

    通过这次实验,我们获得了丰富的知识点,包括 Linux 文件目录遍历的实现方式、ls 命令的选项、文件信息输出、递归遍历目录、选项结构体、getOpt 函数、vi 编辑工具、Linux 库函数和系统调用、Shell 文件通配符和文件...

    遍历磁盘目录.rar

    在Linux或Unix环境中,shell脚本如bash可以使用`for`循环配合`ls`命令或者`find`命令来遍历目录。例如,`find /path/to/directory -type f`会列出指定目录下的所有文件,而`find /path/to/directory -type d`则列出...

    使用Shell遍历目录及其子目录中的所有文件方法

    # 定义一个名为read_dir的函数,用于递归遍历目录 function read_dir() { for file in `ls $1` do # 检查当前元素是否为目录 if [ -d $1"/"$file ] then # 如果是目录,递归调用read_dir函数 read_dir $1"/"$...

    C实现Linux中Shell部分命令.zip

    在C实现中,这通常涉及到调用`opendir()`函数打开目录,然后使用`readdir()`遍历目录内容,将结果输出到终端。同时,可以添加选项如"-l"(长格式)来显示详细信息,这需要结合`stat()`函数获取文件属性。 2. **rm...

    利用shell脚本遍历文件夹内所有的文件并作整理统计的方法

    Shell脚本是一种强大的工具,它允许我们自动化Linux或Unix系统中的文件处理任务。在这个案例中,我们将看到如何通过递归方法遍历文件夹结构,以及如何根据文件名的特定部分进行统计分析。 首先,我们创建一个名为`...

    Linux系统递归生成目录中文件的md5的方法

    PHP脚本提供了一个灵活的方法来遍历目录并计算每个文件的MD5值。脚本中的`get_file_md5()`函数是一个递归函数,它首先获取指定路径下的所有文件和子目录,然后对每个非`.`和`..`的文件或目录进行处理。如果遇到子...

    Linux Shell批量编译

    这一步骤为后续遍历目录中的文件奠定了基础。 ##### 2. 遍历文件与条件判断 脚本通过 `for file in $direc/*` 开始循环遍历当前目录下的所有文件。其中的 `*` 是一个通配符,表示匹配任何字符序列。随后,通过 `if...

    shell递归输出文件名和目录名的方法

    在给定的标题和描述中,主要涉及的是如何使用Shell脚本来递归地输出一个目录及其子目录中的所有文件名和目录名。递归在计算机科学中是一种重要的算法,它允许程序自我调用来解决复杂的问题,例如遍历文件系统结构。 ...

    遍历磁盘目录,遍历所有文件

    // 对每个文件或子目录进行操作,如检查文件类型或递归遍历子目录 if (data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { TraverseDirectory(std::string(dirPath) + "\\" + data.cFileName); } } } while...

    Linux下rar及zip压缩包中批量替换某文件脚本

    1. 遍历指定目录或递归遍历所有子目录,查找所有.zip文件。 2. 使用`unzip`命令提取压缩包中的指定文件到临时目录。 3. 替换临时目录中的目标文件。 4. 使用`zip`命令重新压缩修改后的文件,覆盖原有的.zip文件。 `...

    Unix递归访问

    例如,Python的`os`模块提供了`os.walk()`函数,可以遍历目录树。 总的来说,理解Unix递归访问对于任何在Unix/Linux环境中工作的人来说都是至关重要的技能。它不仅帮助你更有效地管理文件和目录,还为自动化任务和...

Global site tag (gtag.js) - Google Analytics