`

linux 获取指定目录最大深度(层数)02

阅读更多

脚本名:du_folder4.sh

脚本内容:

 

#!/bin/sh

folder_name="$1"

if [ ! -d "$folder_name" ];then

echo "The dir(\"${folder_name}\") does not exist!"

exit 3

fi

this_dir_tmp=`pwd`

# ./test(relative path) --->/home/whuang/du_study2/test

folder_name=`echo "$folder_name"|sed "s#^./#$this_dir_tmp/#g"`

 

# test(relative path) --->/home/whuang/du_study2/test

folder_name=`echo "$folder_name"|sed "s#^\([a-zA-Z]\+.*\)#$this_dir_tmp/\1#g"`

#----------------------------

 

depth_foler()

{

        this_dir=`pwd`

        source_folder="$1"

        source_folder=`echo $source_folder |sed 's#/$##g'`

        test_folder="$2"

        cd $test_folder

        count=0

        while [ ! `pwd` = $source_folder ]

        do

                count=`expr $count + 1`

                cd ..

        done

        cd $this_dir

        return $count

}

 

target_folder="$folder_name"

depth_max=1

for i in `du "$target_folder"` ;do

        if [ -d $i -a ! $i = $target_folder ];then

                depth_foler "$target_folder" "$i"

                retval=$?

                if [ $depth_max -lt $retval ];then

                        depth_max=$retval

                fi

        fi

done

echo "max depth: $depth_max"

 

执行范例:

 

[root@localhost du_study2]# ./du_folder4.sh  /home/whuang/du_study2/test

max depth: 3

[root@localhost du_study2]# ./du_folder4.sh  ./test

max depth: 3

[root@localhost du_study2]# ./du_folder4.sh  test

max depth: 3

[root@localhost du_study2]# du test

4 test/bbb/aaa/ccc

8 test/bbb/aaa

12 test/bbb

16 test

 

说明:可以使用du 命令 来验证脚本du_folder4.sh的正确性。

分享到:
评论

相关推荐

    Linux下自动挂载U盘,到指定目录

    在Linux操作系统中,自动挂载U盘到指定目录是一个便捷且高效的操作,尤其对于系统集成、服务器维护或者自动化任务来说,能大大提高工作效率。这个过程主要涉及到`udev`规则的配置和挂载脚本的编写。下面我们将详细...

    linux c 实现遍历指定路径下的文件夹及文件

    在Linux系统中,C语言是实现底层操作的强大工具,其中包括遍历指定路径下的所有文件和文件夹。这个程序的核心在于使用Linux系统调用,如`opendir()`、`readdir()`和`closedir()`,来读取目录内容,并通过递归的方式...

    linux-bd在linux中快速回到一个父目录

    如果未指定目录名,它将默认返回到当前目录的直接父目录。 "bd" 工具的工作原理基于bash的内置命令和历史记录功能。它通过分析当前目录路径,并利用这些信息来构建返回父目录的相对路径。这不仅减少了键入的时间,...

    深度linux 常用命令

    深度Linux操作系统是一种基于Debian的Linux发行版,其设计目标是为用户提供一个美观、简洁、易用的桌面环境。在深度Linux中,用户可以通过终端来执行各种命令以完成不同的操作任务。下面将详细介绍深度Linux中的一些...

    PHP在获取指定目录下的目录,在获取的目录下面再创建文件,多平台

    在PHP中,获取指定目录下的子目录以及在这些子目录下创建新文件是常见的操作,尤其是在构建多平台项目时,确保代码的跨平台兼容性至关重要。以下是对标题和描述中涉及的知识点的详细说明: 1. **scandir() 函数**:...

    《Linux基础千锤百炼》v2.pdf

    《Linux基础千锤百炼》是一本专注于Linux操作系统基础知识的深度学习资料,旨在帮助读者从入门到精通。这本书特别强调了对Linux命令行工具的掌握,很多内容来源于man文档和info文档的翻译与整理,因此内容权威且全面...

    Linux 遍历目录

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

    c++读写BMP JPG 和png 的图像文件(linux)

    在Linux环境下,C++编程语言可以用来处理各种图像文件,如BMP、JPG和PNG。这些文件格式在数字图像处理领域中非常普遍,各有其特点和用途。BMP是微软开发的一种位图格式,不包含任何压缩,因此文件体积较大;JPG则是...

    linux下透明加解密

    - 挂载文件系统:使用`mount`命令将创建的文件系统挂载到指定目录。 2. LUKS加密的优点: - 多密钥支持:LUKS允许设置多个密钥,便于管理权限。 - 密钥槽备份:可以备份密钥槽,以防丢失。 - 集成度高:与Linux...

    linux5分钟教程(整理)

    `find`是Linux中用于搜索指定路径下符合特定条件的文件或目录的强大工具。例如: 1. 要查找当前目录及其子目录中名为"abc"的文件,可以使用`find . -name "abc"`。 2. 若要查找子目录"xyz",使用`find . -type d -...

    Linux 打印堆栈方法

    获取当前的调用栈信息,结果存储在buffer中,返回值为栈的深度,参数size限制栈的最大深度,即最大取size步的栈信息。 char **backtrace_symbols(void *const *buffer, int size); 把backtrace获取的栈信息转化为...

    JDK1.8_X64在LINUX下安装说明.docx

    1. **复制JDK文件**:将下载好的JDK压缩文件`jdk-8u40-linux-x64.gz`复制到`/home/`目录下。这一步可以使用文件管理器手动完成,也可以通过命令行进行操作: ```bash sudo cp jdk-8u40-linux-x64.gz /home/ ``` ...

    Linux deepin深度操作系统如何修改IP地址

    在Linux Deepin操作系统中,对网络配置进行修改,特别是IP地址的更改,是日常系统管理中的常见任务。这里我们将详细探讨如何使用`nmcli`(Network Manager 的命令行接口)来实现这一目标。 首先,我们需要了解`...

    linux常用脚本说明

    指定深度范围 ```bash find [路径] -maxdepth [数字] ``` `-maxdepth` 参数用于限制查找的最大深度。例如: ```bash find /etc/sbin -maxdepth 10 ``` 这条命令表示在 `/etc/sbin` 目录下,查找不超过10层深度...

    consul 1.4.0 linux版

    《Consul 1.4.0在Linux环境下的深度应用》 Consul是一款由HashiCorp公司开发的开源工具,它提供了服务发现、健康检查、KV存储、多数据中心的解决方案,广泛应用于微服务架构中。在Spring Cloud生态中,Consul作为...

    linux高级编程 课程设计

    4. **目录深度的计算**:通过递归层次的深入,可以计算出每个子目录相对于根目录的深度。 ##### 客户端与服务器间的通信 1. **UDP协议的选择**:为了快速传输统计结果,选择了UDP协议。UDP是一种无连接的、不可靠...

    访问目录下的文件

    2. **列出目录内容**:接着,我们需要获取目录中的所有文件和子目录。在Python中,可以使用`os.listdir()`;在Java中,可以使用`File.list()`。 3. **递归遍历**:如果目录包含子目录,我们可以使用递归。递归函数...

    redhat linux关键命令

    根据给定的文件标题“Redhat Linux关键命令”及其描述、标签和部分内容,本文将深入解析其中提及的多个Linux命令,这些命令对于Redhat Linux系统的管理和操作至关重要。 ### 1. cat - 显示文件内容 `cat`命令用于...

    linux常用命令大全

    在Linux操作系统中,掌握一些常用的命令是至关重要的,...以上只是部分常用命令,Linux命令行的深度和广度远超于此,熟练掌握这些命令能极大地提高你的工作效率。通过不断实践和学习,你会发现Linux命令行的魅力所在。

Global site tag (gtag.js) - Google Analytics