不会读取 影藏文件

main

  1. #!/usr/bin/perl
  2. use autodie;
  3. use utf8;
  4. use Encode qw(decode encode);
  5. if(@ARGV ne 3){ # 检查参数
  6. $err = <<"err";
  7. The script execution parameters are wrong! !
  8. path, "suffix", "old value/new value"
  9. err
  10. die $err;
  11. }
  12. # path, suffix, reg
  13. my ($path, $suffix, $rp) = @ARGV;
  14. @suffix = split " ", $suffix; # 记得把字符串,转化为数组
  15. sub search_file{
  16. my ($fname, $rp) = @_;
  17. my ($o) = split("/", $rp);
  18. open of, "<", $fname;
  19. while(<of>){
  20. chomp;
  21. if($_ =~ /$o/){
  22. return !!1;
  23. }
  24. }
  25. return !!0;
  26. }
  27. sub change_file{
  28. my ($fname, $rp) = @_; # 获取操作文件名 和 替换的正则
  29. if( !search_file($fname, $rp) ){ # 不存在关键字直接返回
  30. return !!0;
  31. }
  32. my @data = ();
  33. my ($o, $n) = split("/", $rp);
  34. open of, "<", $fname;
  35. while(<of>){
  36. chomp;
  37. $_ =~ s/$o/$n/;
  38. push @data, $_;
  39. }
  40. open wf, "+>", $fname;
  41. print wf @data;
  42. return !!1;
  43. }
  44. sub scan_file{
  45. my ($path) = @_;
  46. my @files = glob($path);
  47. foreach my $file (@files){
  48. if(-d $file){ # 文件递归下去
  49. scan_file("$file/*");
  50. }elsif(-f $file){
  51. foreach my $su (@suffix){
  52. if($file =~ /$su$/){ # 文件后缀在匹配范围
  53. if(change_file($file, $rp)){ # 收集受到影响的文件路径
  54. print "$file\n";
  55. }
  56. }
  57. }
  58. }
  59. }
  60. }
  61. scan_file($path);

执行

  1. λ perl main.pl "./test/*" ".txt .html .js" ajanuw/world
  2. ./test/ajanuw.txt
  3. ./test/dist/bundle.html
  4. ./test/src/index.js

perl 遍历指定目录下的所有文件,替换指定文本内容,返回受影响的文件路径的更多相关文章

  1. 写一个PHP函数,实现扫描并打印出指定目录下(含子目录)的所有jpg文件名

    写一个PHP函数,实现扫描并打印出指定目录下(含子目录)的所有jpg文件名 <?php $dir = "E:\照片\\";//打印文件夹中所有jpg文件 function p ...

  2. java-IO流(File对象-深度遍历指定目录下的文件夹和文件)

    需求:遍历这个树状结构 File(String pathname) '\\'为了转义'\' // 通过抽象路径pathname 创建一个新的文件或者目录 File parent = new File( ...

  3. C#.NET中遍历指定目录下的文件(及所有子目录及子目录里更深层目录里的文件)

    //遍历一个目录下所有的文件列表,代码实例 DirectoryInfo dir = new DirectoryInfo(folderName);var list = GetAll(dir); /// ...

  4. c++ 指定目录下的文件遍历

    要实现指定目录下文件的遍历需要执行一下的部分: 第一步获取当前路径的名字:(MAX_PATH是在windows定义的所有的路径名字不超过其,调用该函数会使得得到当前的目录) #include < ...

  5. delphi遍历指定目录下指定类型文件的函数

    遍历指定目录下指定类型文件的函数// ================================================================// 遍历某个文件夹下某种文件,/ ...

  6. [No000073]C#直接删除指定目录下的所有文件及文件夹(保留目录)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  7. C# 获取指定目录下所有文件信息、移动目录、拷贝目录

    /// <summary> /// 返回指定目录下的所有文件信息 /// </summary> /// <param name="strDirectory&qu ...

  8. iOS案例:读取指定目录下的文件列表

    // // main.m // 读取指定目录下的文件列表 // // Created by Apple on 15/11/24. // Copyright © 2015年 Apple. All rig ...

  9. Java基础知识强化之IO流笔记49:IO流练习之 复制指定目录下指定后缀名的文件并修改名称的案例

    1. 复制指定目录下指定后缀名的文件并修改名称的案例     需求:复制指定目录下的指定文件,并修改后缀名.  • 指定的文件是:.java文件.     • 指定的后缀名是:.jad     • 指 ...

随机推荐

  1. Android四大组件应用系列——实现电话拦截和电话录音

    一.问题描述 使用BordercastReceiver和Service组件实现下述功能: 1.当手机处于来电状态,启动监听服务,对来电进行监听录音. 2.设置电话黑名单,当来电是黑名单电话,则直接挂断 ...

  2. 解决IE6-IE8 Js代码不执行问题

    一种可能的原因:form标签不完整. 使用在线工具,测试html代码标签的完整性.

  3. 视觉SLAM中的数学基础 第三篇 李群与李代数

    视觉SLAM中的数学基础 第三篇 李群与李代数 前言 在SLAM中,除了表达3D旋转与位移之外,我们还要对它们进行估计,因为SLAM整个过程就是在不断地估计机器人的位姿与地图.为了做这件事,需要对变换 ...

  4. UAC 实现原理及绕过方法-打洞专用

    首页 新随笔 订阅 管理 随笔 - 7  文章 - 0  评论 - 0 UAC 实现原理及绕过方法   目录 0x01 UAC 实现方法(用户登陆过程)0x02 UAC 架构0x03 触发UAC0x0 ...

  5. oracle访问不同用户的表不添加用户名前缀

    问题的出现,是技术的不断推进.为了更好地实现价值的提升! 01.用视图 create view tab1 select * from B.tab1;       //在A用户下执行 02.同义词 gr ...

  6. mysql存储引擎的一点学习心得总结

    首先我们应该了解mysql中的一个重要特性--插件式存储引擎,从名字就能够看出在mysql中,用户能够依据自己的需求随意的选择存储引擎.实际上也是这样.即使在同一个数据库中.不同的表也能够使用不同的存 ...

  7. 二值化函数cvThreshold()参数CV_THRESH_OTSU的疑惑【转】

    查看OpenCV文档cvThreshold(),在二值化函数cvThreshold(const CvArr* src, CvArr* dst, double threshold, double max ...

  8. Kubernetes1.2如何使用iptables

    转:http://blog.csdn.net/horsefoot/article/details/51249161 本次分析的kubernetes版本号:v1.2.1-beta.0. Kubernet ...

  9. 开发FTP不要使用sun.net.ftp.ftpClient

    转自:http://cai21cn.iteye.com/blog/700188 在开发一个web应用过程中,需要开发一个服务使用ftp功能将数据传输一个网外的ftp服务器.最初使用sun.net.ft ...

  10. ECMAScript 6 入门之字符串

    1.新增字符串的方法 1.字符是否存在 console.log("Yo".indexOf("Y")!=-1); console.log("Yo&quo ...