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

shell脚本以递归方式遍历文件

递归是一种编程技巧,它允许一个函数或方法调用自身来解决问题。在这个问题中,我们需要使用递归来遍历文件夹和其中的文件。

在Shell脚本中,我们可以使用find命令来递归地遍历文件夹。以下是一个示例脚本,它将递归地遍历当前目录下的所有文件,并输出它们的路径:

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

# 定义一个递归函数来遍历文件夹
function traverse() {
  for file in "$1"/*; do
    if [ -d "$file" ]; then
      # 如果是文件夹,则递归调用traverse函数
      traverse "$file"
    else
      # 如果是文件,则输出文件路径
      echo "$file"
    fi
  done
}

# 调用traverse函数,传入当前目录作为参数
traverse "."

这个脚本定义了一个名为traverse的函数,它接受一个参数,即要遍历的文件夹路径。在函数内部,我们使用for循环遍历文件夹中的所有文件。如果文件是一个文件夹,我们递归调用traverse函数,否则我们输出文件的路径。最后,我们调用traverse函数,传入当前目录(.)作为参数。

这个脚本可以用来递归地遍历文件夹和其中的文件,并输出它们的路径。你可以根据需要修改这个脚本,以满足你的需求。

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

相关·内容

  • 使用 Python 实现文件递归遍历

    今天有个脚本需要遍历获取某指定文件夹下面的所有文件,我记得很早前也实现过文件遍历和目录遍历的功能,于是找来看一看,嘿,不看不知道,看了吓一跳,原来之前我竟然用了这么搓的实现。...先发出来看看: def getallfiles(dir): """遍历获取指定文件夹下面所有文件""" if os.path.isdir(dir): filelist = os.listdir...if os.path.isfile(filename): print filename def getalldirfiles(dir, basedir): """遍历获取所有子文件夹下面所有文件...有木有更好的方式呢?网上一搜一大把,原来有一个现成的 os.walk() 函数可以用来处理文件(夹)的遍历,这样优化下就更简单了。...,而 walk 则是先输出顶级文件夹,然后是顶级文件,再输出第二级文件夹,以及第二级文件,以此类推,具体大家可以把上面脚本拷贝后自行验证。

    2.4K20

    递归方式实现二叉树后序遍历_二叉树递归遍历

    上图是一棵二叉树,前序遍历结果:1 2 4 5 3 6 咦,我想你可能会疑惑什么叫做前序遍历,其实很简单,就是按照 根 -》 左 -》 右 的方式遍历二叉树。...首先让我们来看看如何递归的去前序遍历二叉树 注:在这里我特别强调一点,在我们二叉树中,如果采用递归方式,大部分都采用的根左右的方式,即采用子问题的方式,即先处理跟节点,再处理左子树,再处理右子树的这样一种思想...前序递归遍历 /** * Definition for a binary tree node...那么接下来我们再看看非递归方式 前序非递归遍历 /** * Definition for a binary tree node....s.top(); s.pop(); cur=top->right; } return v; } }; 这就是前序遍历的非递归方式

    40510

    Python递归遍历文件夹搜索文件 脚本MagicSearch.py

    ,并且不存在于notSearhFolderArr数组中, 获取文件夹下的所有文件文件夹, 遍历,判断子元素是文件,并且文件类型存在于searchTypeArr,如果真则存在返回路径 判断子元素...,是文件夹并且不属于notSearhFolderArr数组中, 执行第一步,进行递归搜索 代码: # 根据配置好的文件,搜索文件夹 import os import io import sys sys.stdout...fileArr = os.listdir(folderPath) # 获取文件夹下的所有内容(文件文件夹) for item in fileArr: currentPath...innerFileArr = searchFolder(currentPath) # 递归搜索 searFilePathArr.extend(innerFileArr)...extend: 向数组追加一个数组 运行结果: 程序返回的事根目录下所有的pdf文件路径列表 这个脚本稍作修改就可以查询多个文件类型,对文件进行分类,获取要查询的文件路径后,还可以对文件进行批量备份到一个文件夹下

    1.3K10

    最简方式实现二叉树的非递归遍历

    思维导图: 思路分析: 要实现二叉树的非递归遍历,就必须要借助栈的结构特点来实现; 我们根据遍历的顺序,然后对入栈的结点进行分析遍历即可; 代码实现: 就以这个二叉树为例吧!...//二叉树先序遍历(非递归) public void XBTNotRecursion(BinaryTreeNode root){ BinaryTreeNode temp = root...; //二叉树中序遍历(非递归) public void ZBTNotRecursion(BinaryTreeNode root){ BinaryTreeNode temp =...temp = temp.rchild; } } } 3,后序遍历; 后序遍历的非递归算法是三种顺序中最复杂的,原因在于: 1,后序遍历是先访问左、右子树...//二叉树后序遍历(非递归) public void HBTNotRecursion(BinaryTreeNode root){ BinaryTreeNode temp = root

    81920

    二叉树的运用(递归)(遍历方式)(简洁.含代码,习题)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 一、前,中,后序——三种遍历方式 1:前,中,后序遍历 访问方向图示:(后续解题思路) 2.原理图示:(递归) ps:以中序遍历为例...,将二叉树遍历完。...代码实现: 三、递归思想在二叉树中的实际应用 1.求二叉树的结点个数:这里不对TreeSize返回值做保存的原因是,返回值不用于判断 int TreeSize(BTNode* root) { return...0 : TreeSize(root->left) + TreeSize(root->right) + 1; } 2.求二叉树的高度:注意要保存递归回来的返回值再做判断,避免进行下一步递归时返回找上一步递归的值...1.深度优先遍历 2.广度优先遍历

    13110

    使用Shell脚本遍历子目录下所有文件的方法

    最近博客进行了搬家,CDN源发生改变,想着在CDN上将博客所有图片刷新预热一遍,那么问题来了,刷新预热需要得到所有图片地址,于是直接使用Shell脚本递归遍历wp-content/uploads目录先得到图片文件路径...创建Shell脚本 使用vi编辑器,先创建一个vi traveDir.sh文件,复制下面的脚本代码: #!...if [ -d $1"/"$file ] #注意此处之间一定要加上空格,否则会报错 then read_dir $1"/"$file else echo $1"/"$file #在此处处理文件即可.../traveDir.sh /xxx/wp-content >> 1.txt 后续操作 导出的文件路径可能是/data/wwwroot/xiaoz.me/wp-content/uploads//2019/...总结 脚本批量导出文件路径 文本工具将站点根目录批量替换为自己的域名 提交URL刷新 脚本比较简单,网上一搜一大把,此文参考了:使用Shell遍历目录及其子目录中的所有文件方法

    1.5K20

    C#如何遍历某个文件夹中的所有子文件和子文件夹(循环递归遍历多层),得到所有的文件名,存储在数组列表中

    首先是有一个已知的路径,现在要遍历该路径下的所有文件文件夹,因此定义了一个列表,用于存放遍历到的文件名。...递归遍历如下:将已知路径和列表数组作为参数传递, public void Director(string dir,List list) { DirectoryInfo d...d.GetDirectories();//文件夹 foreach (FileInfo f in files) { list.Add(f.Name);//添加文件名到列表中...} //获取子文件夹内的文件列表,递归遍历 foreach (DirectoryInfo dd in directs) {...Director(dd.FullName, list); } } 这样就得到了一个列表,其中存储了所有的文件名,如果要对某一个文件进行操作,可以循环查找: foreach (string

    14K40

    精心构造的PS1文件名导致Powershell命令执行

    \calc;1.ps1”则可以用来执行calc.exe,如果使用标准调用了该脚本Windows外壳程序“ cmd.exe”和“ calc.exe”与ps1本位于同一目录中。如下图所示: ?...但是,如果这些脚本是从PowerShells Shell运行的而不是“ cmd.exe”,则“&”(调用运算符)将阻止我们的漏洞利用。...不过,如果用户启用了“ .ps1”脚本以将PowerShell作为默认程序打开,则只需双击该文件即可触发漏洞利用。“&”呼叫运算符将不再起效果。...另外,如果用户尚未启用PowerShell来打开.ps1本, ?...默认情况下 然后从cmd.exe运行脚本,例如: c:\>powershell "\Hello;World.ps1" 也可以直接运行,而无需放入PowerShell shell

    1.9K20

    几个shell编程的小例子

    1 遍历文件系统可以使用Shell脚本中的循环结构和相关的命令来完成。下面是一个简单的例子,展示如何使用Shell脚本来完成一次文件系统的遍历。#!...}s%s\n" "" "$item" # 如果当前路径是一个目录,则递归调用traverse函数来遍历子目录 if [[ -d "$fullpath" ]] then #...递归调用traverse函数,并增加缩进级别 traverse "$fullpath" $((indent+2)) fi done}# 调用traverse函数,并传入待遍历的路径作为参数...subdirectory1 file3.txt subdirectory2directory2 file4.txt在上面的例子中,我们先定义了一个名为traverse的函数,用于递归遍历文件和目录...我们使用ls命令获取指定路径下的所有文件和目录,并在循环中处理每一个文件和目录。如果某个文件是一个目录,则会递归调用traverse函数来遍历子目录。

    27462

    【C 语言】文件操作 ( 配置文件读写 | 写出或更新配置文件 | 逐行遍历文件文本数据 | 获取文件中的文本行 | 查询文本行数据 | 追加文件数据 | 使用占位符方式拼接字符串 )

    文章目录 一、逐行遍历文件文本数据 1、获取文件中的文本行 2、查询文本行数据 3、追加文件数据 4、使用占位符方式拼接字符串 二、完整代码示例 一、逐行遍历文件文本数据 ---- 1、获取文件中的文本行...调用 fgets 方法 , 从文件中 , 获取一行数据 , 写出到指定的 数组 或 内存空间 中 ; // 获取 fp 文件的一行数据 , 保存到 line_buffer 数组中 ,...NULL) { strcat(file_buffer, line_buffer); continue; } 4、使用占位符方式拼接字符串...调用 sprintf 可以使用占位符方式拼接字符串 , 这里将键值对按照 "%s = %s\n" 形式 , 拼接成字符串 , 然后将拼接后的字符串追加到另外一个数组中 ; //...追加拷贝到 file_buffer 数组中 strcat(file_buffer, line_buffer); 二、完整代码示例 ---- 完整代码示例 : // 逐行遍历配置文件

    1.4K40

    2020-09_Shell 编程笔记

    简单和复杂的两个 shell 脚本。 范例 1. 清除/var/log 下的 message 日志文件的简单命令脚本。 # 把所有命令放在一个文件堆积起来就形成了脚本。...(4) 脚本以.sh为扩展名 (5) 代码书写习惯优秀 I....位置变量 0 获取当前执行的 shell 脚本的文件名,包括脚本路径,如 dirname 0 # 文件路径 basename n 获 取 当 前 执 行 的 s h e l l 本 的 第 n...个 参 数 值 , n = 1..9 , 当 n 为 0 时 表 示 本 的 文 件 名 , 如 果 n 大 于 9 , 则 n 获取当前执行的 shell 脚本的第 n 个参数值,n=1..9,...当 n 为 0 时表示脚本的文件名,如果n 大于9,则 n获取当前执行的shell脚本的第n个参数值,n=1..9,当n为0时表示脚本的文件名,如果n大于9,则{10} $# 获取当前 shell 脚本命令行中参数的总个数

    1.4K10

    Linux 命令(80)—— chown 命令

    为默认选项 --preserve-root 不允许在根目录 /上递归操作 --reference=RFILE 使用指定的文件 RFILE 的所有者和所属用户组,而非指定值 -R --recursive...递归处理所有的文件及子目录 以下三个选项 -H、-L 和 -P 与 -R 配合使用,用于递归操作时确定遍历方式: -H 如果命令行参数是一个符号链接指向一个目录,则遍历它 -L 遍历每一个符号链接指向的目录...-P 不遍历任何符号链接。...chown root:root FILE (3)只修改文件所属组为 root。 chown :root FILE (4)递归修改所有的文件及子目录所有者和所属组为 root。...当前用户登录后所使用的 Shell,在 Centos/RHEL 系统中,默认的 Shell 是 Bash;如果不希望用户登登系统,可以通过 usermod 或者手动修改 passwd 设置,将该字段设置为

    2.8K20

    安全杂谈-Windows下的几种提权方式的粗略汇总

    本人水平有限,粗浅地总结了下几种提权方式,以及一些个人看法,并配合相应的演示。可能对实战没什么太直接的帮助,算是帮大家温习下基础吧。...换言之就是没打补丁就能提权,另外windows平台上许多软件也被爆出提权漏洞,所以说枚举目标机上打了哪些补丁、操作系统的版本以及安装了哪些软件对于利用漏洞提权来说十分重要。...KB4013389" /C:"KB958644" powershell https://github.com/rasta-mouse/Sherlock msf模块 得先获得一个meterpreter shell...,不区分大小写的查找: findstr /si password *.txt 递归的搜索目录并且只显示文件名 C:\> dir /b /s unattend.xml 3.3.GPP windows下这些场景需要存储和使用用户凭证...msf模块 exploit/windows/local/always_install_elevated powersploit下的powerup.ps1本里有个Get-RegistryAlwaysInstallElevated

    97410
    领券