linux平台:使用lua语言遍历某一文件夹下所有文件

linux平台:使用lua语言遍历某一文件夹下所有文件,第1张

你可以参考如下实例代码:function getFile(file_name) 

    local f = assert(io.open(file_name, 'r'))

    local string = f:read("*all")

    f:close()

    return string

end function writeFile(file_name,string)

 local f = assert(io.open(file_name, 'w'))

 f:write(string)

 f:close()

end --从命令行获取参数, 如果有参数则遍历指定目录,没有参数遍历当前目录 if arg[1] ~= nil then

     cmd = "ls "..arg[1]

else

     cmd = "ls" end print("cmd", cmd)

--io.popen 返回的是一个FILE,跟c里面的popen一样 local s = io.popen(cmd)

local fileLists = s:read("*all")

print(fileLists)

while true do --从文件列表里一行一行的获取文件名 _,end_pos, line = string.find(fileLists, "([^\n\r]+.txt)", start_pos)

        if not end_pos then break end --    print ("wld", line) local str = getFile(line)

    --把每一行的末尾 1, 替换为 0, local new =string.gsub(str, "1,\n", "0,\n")

    --替换后的字符串写入到文件。以前的内容会清空     writeFile(line, new)

    start_pos = end_pos + 1 end

摘要: Linux , Shell

Shell中常用循环有 for , while

for循环只能用于 固定次数 的循环,因此不能无限循环和用于一些在后台守护进程一直运行的程序,语法语句如下

也可以写成一行,用 ; 分隔

取值列表内元素以空格隔开,如果元素带有空格则用引号包裹起来,例子如下

输出如下,可见循环到最后退出循环,引用变量依旧是最后一个取值列表元素

一行的写法

Shell的for循环也可以采用C语言的写法,注意是 双括号 ,用 分号; 间隔

一个简单例子

while循环语句结合条件测试使用,语法如下

举一个例子

在循环中使用条件测试实现复杂的逻辑,例如

也可以使用&&,||一行完成,省去if,fi

Shell的continue,break语句和Python一样,例子如下

break语句下输出4

continue语句下输出4 6 7 8 9 10

常见结合使用的循环体有 序列 , 数组 , 命令行传参 , 文件目录和文件

序列通过 seq 命令或者 {begin..end..step} 符号进行定义:

结合for循环使用案例

在Shell中使用小括号 () 定义数组,数组遍历使用 [@] 符号,防止元素有空格用双引号包起来,,例子如下

命令行传参遍历使用固定符号 $@ ,如果参数中有空格,用双引号括起来,例子如下

文件遍历使用 ls 命令,可以指定目录,以及通配符匹配

一个双重循环实现,注意 expr表达式中乘号要加转移符

(2)将某目录下大小大于阈值的文件移动到另一个文件

遍历循环一个目录,使用awk语法获得文件大小,将100m以上的文件移动到另一个文件夹

(2)指定开始日期和结束日期完成一个跑批任务

指定一个开始时间和结束时间,while从开始日期一直自增到结束日期循环结束,通过 date -d '2021-01-01 1day' +%Y-%m-%d 自增一天

enum{DT_UNKNOWN = 0,# define DT_UNKNOWN DT_UNKNOWNDT_FIFO = 1,# define DT_FIFO DT_FIFODT_CHR = 2,# define DT_CHR DT_CHRDT_DIR = 4,# define DT_DIR DT_DIRDT_BLK = 6,# define DT_BLK DT_BLKDT_REG = 8,# define DT_REG DT_REGDT_LNK = 10,# define DT_LNK DT_LNKDT_SOCK = 12,# define DT_SOCK DT_SOCKDT_WHT = 14# define DT_WHT DT_WHT}这是d_type的枚举类型..........每个值表示一个类型..........4是目录,0是未知,1是管道,2是字符设备,8表示文件...............6是块设备..........其他的都如字面表示..........很容易区分.........


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8403389.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-16
下一篇 2023-04-16

发表评论

登录后才能评论

评论列表(0条)

保存