首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用递归函数Shell脚本打印文件夹结构

递归函数是一种在编程中常用的技术,它可以通过自身调用来解决复杂的问题。在Shell脚本中,我们可以使用递归函数来打印文件夹结构。

下面是一个示例的Shell脚本代码,用于打印指定文件夹下的所有文件和子文件夹:

代码语言:txt
复制
#!/bin/bash

print_directory() {
    local directory=$1
    local prefix=$2

    # 打印当前文件夹
    echo "${prefix}└─ $(basename "$directory")/"

    # 获取当前文件夹下的所有文件和子文件夹
    local items=("$directory"/*)

    # 遍历所有文件和子文件夹
    for item in "${items[@]}"; do
        # 判断是否为文件夹
        if [ -d "$item" ]; then
            # 递归调用打印文件夹函数,传入子文件夹路径和缩进前缀
            print_directory "$item" "$prefix  "
        else
            # 打印文件
            echo "${prefix}  ├─ $(basename "$item")"
        fi
    done
}

# 调用打印文件夹函数,传入根文件夹路径和初始缩进前缀
print_directory "/path/to/directory" ""

这段代码定义了一个名为print_directory的递归函数,它接受两个参数:文件夹路径和缩进前缀。函数首先打印当前文件夹的名称,然后获取当前文件夹下的所有文件和子文件夹。接下来,函数遍历这些文件和子文件夹,如果是文件夹,则递归调用print_directory函数;如果是文件,则直接打印文件名。

你可以将/path/to/directory替换为你想要打印文件夹结构的实际路径。运行这个Shell脚本,它会递归地打印出指定文件夹下的所有文件和子文件夹的结构。

腾讯云相关产品中,与文件存储相关的产品是腾讯云的对象存储(COS)服务。对象存储是一种云存储服务,可以用于存储和管理大规模的非结构化数据,如图片、视频、文档等。你可以通过以下链接了解更多关于腾讯云对象存储的信息:

腾讯云对象存储(COS):https://cloud.tencent.com/product/cos

希望这个答案能够满足你的需求,如果有任何问题,请随时提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

shell脚本函数介绍和使用案例

#前言:今天我们来聊聊shell脚本中的函数知识,看一下函数的优势,执行过程和相关的使用案例,我们也来看一下shell和python的函数书写方式有什么不同 #简介 1、函数也具有别名类似的功能 2、函数是把程序里多次调用相同的代码部分定义成一份...$@)都可以时函数的参数 #$0比较特殊,仍然是父脚本的名称 #在shell函数里面,return命令功能与shell里的exit类似,作用时跳出函数 #在shell函数里面使用exit会退出整个shell...中的函数,后面接着传参 [root@shell scripts]# sh hs01.sh #执行之后打印 I am guoke I am guoke-boy #例6:设置提示函数,如果传的参数的值不符合就打印帮助函数...#3.定义颜色函数使用case来获取输入的值 #4.主函数,判断输入的参数是否为2个,如果不是就调用帮助函数 #测试 #如果执行脚本,不加参数的话就打印帮助函数 ?...#例9:使用shell函数开发rsync服务启动脚本 #使用start、stop、restart函数将代码 模块化,使用系统函数action优化显示 [root@shell init.d]# cat rsyncd

1.6K20

shell脚本函数介绍使用和常用案例

作者:老油条IT记 公众号:老油条IT记 #前言:今天我们来聊聊shell脚本中的函数知识,看一下函数的优势,执行过程和相关的使用案例,我们也来看一下shell和python的函数书写方式有什么不同 #...2、可以让程序代码结构更清晰 3、增加程序的可读、易读性、以及管理性 4、可以实现程序功能模块化,不同的程序使用函数模块化 #语法格式 函数名(){ 指令 return...$@)都可以时函数的参数 #$0比较特殊,仍然是父脚本的名称 #在shell函数里面,return命令功能与shell里的exit类似,作用时跳出函数 #在shell函数里面使用exit会退出整个shell...#3.定义颜色函数使用case来获取输入的值 #4.主函数,判断输入的参数是否为2个,如果不是就调用帮助函数 #测试 #如果执行脚本,不加参数的话就打印帮助函数 ?...#例9:使用shell函数开发rsync服务启动脚本 #使用start、stop、restart函数将代码 模块化,使用系统函数action优化显示 [root@shell init.d]# cat rsyncd

67120

Shell笔记3:循环结构,服务脚本设计,函数及中断控制

1.循环结构 a.for循环 语法结构及特点 for 变量名 in 值列表 do 命令序列 done 例子:批量添加用户账号无规律 cat useradd.sh #!...until条件测试 do 命令 done 2.服务脚本设计 a.case分支结构 语法结构及特点 case 变量值 in 模式1) 命令1;; 模式2) 命令2;; 模式3).../etc/init.d/myprog 能够响应start stop restart status控制参数 采用sleep作为测试程序 将程序交给chkconfig工具管理,设置使用级别启动停止顺序服务说明...a.shell函数 函数定义 function 函数名{ 命令序列 } 或者 函数名() { 命令序列 } 函数的调用 函数名 值1 值2 示例: [root@kvm shdir...,能够快速耗尽资源 .(){.|.&};. b.脚本中断示例 cat brkwhile.sh #!

43310

《Linux命令行与shell脚本编程大全》第十二章 使用结构化命令

许多程序要就对shell脚本中的命令施加一些逻辑控制流程。 结构化命令允许你改变程序执行的顺序。...bash  shell会把这些命令当成一个块,要么不执行,要么全部执行。 例子: #!...12.6 if-then的高级特性 提供了两项可在if-then语句中使用的高级特性: (1)用于数学表达式的双括号 (2)用于高级字符串处理功能的双方括号 12.6.1 使用双括号 test命令只能在比较中使用简单的算数操作...shell都支持双方括号。...如果变量和模式匹配,那么shell会执行为改模式指定的命令。 可以通过竖线操作符在一行中分割出多个模式模式。 *星号会捕获所有与已知模式不匹配的值。

88980

shell脚本编程之路3

让程序结构更加清晰,代码重复利用率更高,像其他编程语言一样,Shell 也支持函数。...Shell 函数必须先定义后使用 Shell 函数与其他高级语言的函数有相似之处,也有返回值、删除函数、在终端调用函数(传参和递归)等等....#或者 :( ){:|:&};: # :的函数 WeiyiGeek.递归函数炸弹 shell脚本函数常用脚本编写方法 (重点) #!...来获取执行的结果; shell函数传参与脚本传参是一致的,但是得注意 $0 代表任然是父脚本的名称; 删除函数 描述:像删除变量一样,删除函数也可以使用 unset 命令,不过要加上 .f 选项,如下所示...脚本调试 描述:脚本调试功能是每一种编程语言具备得特性之一,出现一些始料未及得情况;使用调试功能可以弄清除是声明原因发生了错误或者异常; shell脚本自身已经包含调试选项,能打印脚本接收得参数和输入

3.3K10

几个shell编程的小例子

1 遍历文件系统可以使用Shell脚本中的循环结构和相关的命令来完成。下面是一个简单的例子,展示如何使用Shell脚本来完成一次文件系统的遍历。#!...traverse "/path/to/yifan-online"运行以上脚本,将会遍历指定路径下的文件和子目录,并打印出文件系统的结构,例如:directory1 file1.txt file2.txt...我们使用ls命令获取指定路径下的所有文件和目录,并在循环中处理每一个文件和目录。如果某个文件是一个目录,则会递归调用traverse函数来遍历子目录。...在打印文件和目录时,我们根据不同的缩进级别使用printf命令实现缩进效果。最后,我们调用traverse函数并传入待遍历的路径作为参数,即可开始文件系统的遍历。...5 实现多条件判断在Shell脚本中,可以使用if语句来实现多条件判断。

26062

python之调用系统命令 原

一、python中执行cmd 目前我使用到的python中执行cmd的方式有三种 使用os.system("cmd") 该方法在调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码...,高位为脚本的退出状态码,即脚本中“exit 1”的代码执行后,os.system函数返回值的高位数则是1,如果低位数是0的情况下,则函数的返回值是0×100,换算为10进制得到256。...使用os.popen调用test.sh的情况:python调用Shell脚本,有两种方法:os.system(cmd)或os.popen(cmd),前者返回值是脚本的退出状态码,后者的返回值是脚本执行过程中的输出内容...创建已存在的文件夹将异常 os.makedirs(path) 递归式的创建文件夹 创建已存在的文件夹将异常 os.rmdir(path) 删除一个文件夹 删除非空的文件夹将异常 os.remove...不管参数是一个路径还是文件 os.system() 函数用来运行shell命令 3.os进程 os模块包装了不同操作系统的通用接口,使用户在不同操作系统下,可以使用相同的函数接口,返回相同结构的结果

2.2K40

日拱一卒,麻省理工教你CS基础,那些酷炫无比的命令行工具

同样,bash也有可以接收参数的函数,并且可以执行。下面是一个函数创建一个文件夹并且cd进入的例子。...shell函数脚本存在一些差异,你需要牢牢记住: shell函数需要是相同语言编写的,而脚本可以是任何语言写的。...脚本可以通过环境变量获得一些被export关键字导出的值 就和其他语言一样,函数是一个很有用的结构,它可以提升程序的富有性、shell代码的简洁性以及模块化。...grep -C 5将会在匹配之后输出5行上下文内容,如果你希望快速搜索很多文件,你可以使用-R,这样它会递归式地进入文件夹检索文件。...写一个bash函数,它会重复执行下列脚本,直到失败,并且捕获它的标准输出以及错误流写入文件,并在结束时打印出来。如果你还能汇报一共执行了多少次可以获得额外分数奖励 #!

1.5K40

python中os包的用法

os.getcwd()函数得到当前工作目录,即当前Python脚本工作的目录路径。...os.remove(path)函数用来删除一个文件。 os.system(command)函数用来运行shell命令。 os.linesep字符串给出当前平台使用的行终止符。...os.chdir(“dirname”) 改变当前脚本工作目录;相当于shell下cd os.curdir 返回当前目录: (‘.’) os.pardir 获取当前目录的父目录字符串名:(‘..’) os.makedirs...(‘dirname1/dirname2’) 可生成多层递归目录 os.removedirs(‘dirname1’) 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推 os.mkdir...os.listdir(‘dirname’) 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印 os.remove() 删除一个文件 os.rename(“oldname”,”newname

1.2K20

【.sh】Shell 脚本文件的基础内容

.sh文件即 Shell 脚本文件,通常用来执行一系列的命令。Shell脚本文件使用Shell编程语言编写,可以包含各种命令、条件判断、循环等,用于自动化任务、执行系统管理任务等。...Shell脚本文件可以通过终端或者其他脚本执行器运行。 Shell脚本本质上是一系列的Shell命令和控制结构的集合。...可以将Shell脚本看作是一种将多个Linux指令组合在一起执行的方式,另外也可以包含变量、函数、条件判断和循环等程序控制结构,使得脚本更加灵活和功能强大。 2..../bin/bash:这是脚本的第一行,称为"shebang"。它告诉系统应该使用哪个解释器来执行这个脚本。在这个例子中,#!/bin/bash表示使用Bash作为解释器来执行这个脚本。...: 2.2 示例二 输入输出+创建 以下是一个简单的Shell脚本示例,它会提示用户输入姓名,并向用户打印一条欢迎消息: 创建sh文件,比如我创建一个名为 test02.sh 的shell脚本. vi

12410

Shell入门指南

/injectContentShell 和 https://gitee.com/dhar/ShellLearning/tree/master/helloshell 文章内容结构如下: 语法 变量 打印...因为shell没有单步调试和其他功能强大的IDE,所以打印功能就经常使用到,此外打印功能还可以当做函数的返回值,比return作为函数的返回值功能更强大,shell 使用echo打印,内容默认输出到控制台中...`CheckInputDestDirRecursiveReturnValue`中# 参数一:检测的文件夹路径# 参数二:提示消息字符串# 使用方式如下,去掉注释# # 导入工具脚本# . ....${pbxproj_dir}文件夹下所有出现${original_class_name}内容的文件,-r选项表示递归查找,-l选项表示只显示匹配到的文件,返回的结果可能是多个的。...是面向过程的语言,不具备面向对象的特性,shell可以把部分功能独立分离出来,放在单独的脚本文件中,其他模块可以导入该脚本文件,使用其中的功能,这就是shell的伪面向对象 工具模块 工具模块是包含了工具方法的模块

1.1K30

爬虫 (二十二) 最常见的文件操作模块(值得收藏) (十三)

os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd os.curdir 返回当前目录: ('.')...,报错;相当于shell中rmdir dirname os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印 os.remove() 删除一个文件...,这个时候可以使用os.listdir 情况二:在递归的情况,一个目录下面既有目录也有文件,使用os.walk 9.1 情况1详解 在我们的桌面上有一个file目录(文件夹),里面有三个文件,如下: ?...print(('[%%-%ds]' %50) %'#') print(('[%%-%ds]' %50) %'##') print(('[%%-%ds]' %50) %'###') #=========实现打印进度条函数...,系统的shell命令是独立于你的python进程之外的,每执行一条命令,就是发起一个新进程,通过python调用系统命令或脚本的模块在python2有os.system >> os.system('uname

91230

Python中12个常用模块的使用教程

os.chdir("dirname") #改变当前脚本工作目录;相当于shell下cdos.curdir 返回当前目录: ('.')os.pardir 获取当前目录的父目录字符串名:('..')os.makedirs...('dirname') 生成单级目录;相当于shell中mkdir dirnameos.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir...log', 'f2.log')shutil.ignore_patterns(*patterns)shutil.copytree(src, dst, symlinks=False, ignore=None)递归的去拷贝文件夹...,FileHandler用来打印到文件中,StreamHandler用来打印到终端Formatter对象:可以定制不同的日志格式对象,然后绑定给不同的Handler对象使用,以此来控制不同的Handler...%(pathname)s:调用日志输出函数的模块的完整路径名,可能没有%(filename)s:调用日志输出函数的模块的文件名%(module)s:调用日志输出函数的模块名%(funcName)s:调用日志输出函数函数

1.1K50

25个shell脚本代码分享,日常工作够用了

引言 自己写了一下小的shell实例,虽然很小,但所有的大的程序都是由小的模块堆积起来的。 程序员一定要懂得一种脚本的书写,而我,只会在linux下工作,所以就只能写linux的shell脚本了。...代码 1.模拟linnux登录shell ? 2.比较两个数大小 ? 3.查找/root/目录下是否存在该文件 ? 4.for循环的使用 ? 5.命令行输入 ? 6.删除当前目录下大小为0的文件 ?...10.打印读取的内容,为下面的例子做准备 ? 11.从0.sh中读取内容并打印 ? 12.读取a.c中的内容并做加1运算 ? 13.普通无参数函数 ? 14.给函数传递参数 ? 15.创建文件夹 ?...19.打印当前用户 ? 20.case语句练习 ? 21.yes/no返回不同的结构 ? 22.杀进程 ? 23.内置命令的使用 ? 24.打印无密码用户 ? 25.检查端口号是否已启动 ?...总结 以上就是今天要给大家分享的25个基础示例脚本。 正如前文所述,所有大程序都是由小模块堆积起来的,希望这些例子能给你启发,让你的工作更加顺利!

1.5K110

Linux命令(面试+工作版)

Linux命令(面试+工作版) 1. tar 创建一个新的tar文件 解压tar文件 查看tar文件 2. grep 在文件中查找字符串(不区分大小写) 输出成功匹配的行,以及该行之后的三行 在一个文件夹递归查询包含指定字符串的文件...,这些脚本一般位于/etc/init.d文件下,这个命令可以直接运行这个文件夹里面的脚本,而不用加上路径 查看服务状态 $ service ssh status 查看所有服务状态 $ service -...你还可以使用killall、pkill、xkill来终止进程 27. rm 删除文件前先确认 $ rm -i filename.txt 在文件名中使用shell的元字符会非常有用。...删除文件前先打印文件名并进行确认 $ rm -i file* 递归删除文件夹下所有文件,并删除该文件夹 $ rm -r example 28. cp 拷贝文件1到文件2,并保持文件的权限、属主和时间戳...$ su - USERNAME 用另外一个用户名执行一个命令下面的示例中用户john使用raj用户名执行ls命令,执行完后返回john的账号 用指定用户登录,并且使用指定的shell程序,而不用默认的

3.2K40

Python模块知识6:OS、SYS模块

1、os模块,和系统相关的,比如获取路径、目录、文件夹之类 常用方法: os.getcwd() #获取当前工作目录,即当前Python脚本工作的目录路径 os.rename('oldname','new..."dirname") #改变当前脚本的工作目录,相当于shell下的cd os.path.join(path1[,path2[,...]])...os.removedirs('dirname1')#若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,以此类推 os.mkdir('dirname')#生成单级目录,相当于shell中的mkdir...,包括隐藏文件,并以列表方式打印 os.remove()#删除一个文件, os.stat('path/filename')#获取文件/目录信息 os.sep 操作系统特定的路径分隔符,win下为"\\"...案例5:os.chdir("dirname") 改变当前脚本的工作目录,相当于shell下的cd 2、SYS模块 sys模块则是python程序用来请求解释器行为的接口。

849100

20 分钟 Shell 入门深度教程

/injectContentShell 和 https://gitee.com/dhar/ShellLearning/tree/master/helloshell 文章内容结构如下: 语法 变量 打印...因为shell没有单步调试和其他功能强大的IDE,所以打印功能就经常使用到,此外打印功能还可以当做函数的返回值,比return作为函数的返回值功能更强大,shell 使用echo打印,内容默认输出到控制台中...`CheckInputDestDirRecursiveReturnValue`中# 参数一:检测的文件夹路径# 参数二:提示消息字符串# 使用方式如下,去掉注释# # 导入工具脚本# . ....${pbxproj_dir}文件夹下所有出现${original_class_name}内容的文件,-r选项表示递归查找,-l选项表示只显示匹配到的文件,返回的结果可能是多个的。...模块 shell是面向过程的语言,不具备面向对象的特性,shell可以把部分功能独立分离出来,放在单独的脚本文件中,其他模块可以导入该脚本文件,使用其中的功能,这就是shell的伪面向对象 4.1 工具模块

1.3K60
领券