博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ruby和SHELL中如何遍历指定目录的文件
阅读量:6985 次
发布时间:2019-06-27

本文共 1067 字,大约阅读时间需要 3 分钟。

在工作中我们有在Ruby和SHELL中如何遍历指定目录的文件的需求,这个应该如何来实现呢?网上的方法也非常之多,我们可以拿来参考参考,如下边的traverse.rb文件内容所示:

#!/usr/bin/ruby def traverse(path)    if File.directory?(path)      puts "Dirs:" + path      Dir.foreach(path) do |file|        if file != "." and file != ".."          traverse(path + "/" + file)        end      end    else      puts "Files:" + path    end  end   traverse("d:/vmware")

其实ruby中已经定义了Find.find方法来处理这种情况,上面的ruby程序可以用其方法来实现,代码显得更为整洁,如下所示:

#!/usr/bin/ruby require  'find'Find.find("/usr/local/src") do |filename|  p filenameend

我们还可以利用Find.find方法来输出ruby中可用的rb库,如下所示:

#!/usr/bin/ruby require "find"def printrb  $:.each do |dir|  	next if dir == "."  	next if dir == ".."  	Find.find(dir) do |f|  		if f =~ /\.rb$/i  			puts f   		end  	end  endend printrb

如果我们用shell脚本来实现类似需求,比如想遍历/usr/local/src目录里面包含的所有文件(包括子目录),那么应该如何实现呢?这里也会用到递归的思想,脚本如下:

#!/bin/bash  function traverse(){for file in `ls $1`      do         if [ -d $1"/"$file ]         then            traverse $1"/"$file         else            echo $1"/"$file          fi      done   }traverse "/usr/local/src"

转载地址:http://jympl.baihongyu.com/

你可能感兴趣的文章
Nervos 双周报第 3 期:佛系新年之后的开工大吉!
查看>>
测试开发系类之接口自动化测试
查看>>
【PHP 扩展开发】Zephir 基础篇
查看>>
HTML
查看>>
HashMap浅析?
查看>>
字节跳动开源Go结构体标签表达式解释器,成请求参数校验的杀手锏
查看>>
怎么将在线录制的视频转为GIF动态图
查看>>
js的setTimeout和Promise---同步异步和微任务宏任务
查看>>
【剑指offer】顺时针打印矩阵
查看>>
以太坊交易池处理逻辑
查看>>
怎么将图片上传封装成指令?
查看>>
leetcode讲解--861. Score After Flipping Matrix
查看>>
干货 | 金融级互联网产品持续交付的挑战与应对
查看>>
一道面试题引发的思考 --- 理解 new 运算符
查看>>
聊聊JavaScript和Scala的表达式 Expression
查看>>
[原]数据科学教程: 如何使用 mlflow 管理数据科学工作流
查看>>
npm上创建发布package
查看>>
分析 JavaScript 的数据类型与变量
查看>>
解决JS文件引用路径多层查找
查看>>
FE.TEST-前端测试初探
查看>>