perl 遍历指定目录下的所有文件,替换指定文本内容,返回受影响的文件路径
不会读取 影藏文件
main
#!/usr/bin/perl
use autodie;
use utf8;
use Encode qw(decode encode);
if(@ARGV ne 3){ # 检查参数
$err = <<"err";
The script execution parameters are wrong! !
path, "suffix", "old value/new value"
err
die $err;
}
# path, suffix, reg
my ($path, $suffix, $rp) = @ARGV;
@suffix = split " ", $suffix; # 记得把字符串,转化为数组
sub search_file{
my ($fname, $rp) = @_;
my ($o) = split("/", $rp);
open of, "<", $fname;
while(<of>){
chomp;
if($_ =~ /$o/){
return !!1;
}
}
return !!0;
}
sub change_file{
my ($fname, $rp) = @_; # 获取操作文件名 和 替换的正则
if( !search_file($fname, $rp) ){ # 不存在关键字直接返回
return !!0;
}
my @data = ();
my ($o, $n) = split("/", $rp);
open of, "<", $fname;
while(<of>){
chomp;
$_ =~ s/$o/$n/;
push @data, $_;
}
open wf, "+>", $fname;
print wf @data;
return !!1;
}
sub scan_file{
my ($path) = @_;
my @files = glob($path);
foreach my $file (@files){
if(-d $file){ # 文件递归下去
scan_file("$file/*");
}elsif(-f $file){
foreach my $su (@suffix){
if($file =~ /$su$/){ # 文件后缀在匹配范围
if(change_file($file, $rp)){ # 收集受到影响的文件路径
print "$file\n";
}
}
}
}
}
}
scan_file($path);
执行
λ perl main.pl "./test/*" ".txt .html .js" ajanuw/world
./test/ajanuw.txt
./test/dist/bundle.html
./test/src/index.js
perl 遍历指定目录下的所有文件,替换指定文本内容,返回受影响的文件路径的更多相关文章
- 写一个PHP函数,实现扫描并打印出指定目录下(含子目录)的所有jpg文件名
写一个PHP函数,实现扫描并打印出指定目录下(含子目录)的所有jpg文件名 <?php $dir = "E:\照片\\";//打印文件夹中所有jpg文件 function p ...
- java-IO流(File对象-深度遍历指定目录下的文件夹和文件)
需求:遍历这个树状结构 File(String pathname) '\\'为了转义'\' // 通过抽象路径pathname 创建一个新的文件或者目录 File parent = new File( ...
- C#.NET中遍历指定目录下的文件(及所有子目录及子目录里更深层目录里的文件)
//遍历一个目录下所有的文件列表,代码实例 DirectoryInfo dir = new DirectoryInfo(folderName);var list = GetAll(dir); /// ...
- c++ 指定目录下的文件遍历
要实现指定目录下文件的遍历需要执行一下的部分: 第一步获取当前路径的名字:(MAX_PATH是在windows定义的所有的路径名字不超过其,调用该函数会使得得到当前的目录) #include < ...
- delphi遍历指定目录下指定类型文件的函数
遍历指定目录下指定类型文件的函数// ================================================================// 遍历某个文件夹下某种文件,/ ...
- [No000073]C#直接删除指定目录下的所有文件及文件夹(保留目录)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- C# 获取指定目录下所有文件信息、移动目录、拷贝目录
/// <summary> /// 返回指定目录下的所有文件信息 /// </summary> /// <param name="strDirectory&qu ...
- iOS案例:读取指定目录下的文件列表
// // main.m // 读取指定目录下的文件列表 // // Created by Apple on 15/11/24. // Copyright © 2015年 Apple. All rig ...
- Java基础知识强化之IO流笔记49:IO流练习之 复制指定目录下指定后缀名的文件并修改名称的案例
1. 复制指定目录下指定后缀名的文件并修改名称的案例 需求:复制指定目录下的指定文件,并修改后缀名. • 指定的文件是:.java文件. • 指定的后缀名是:.jad • 指 ...
随机推荐
- windows SVN 服务器搭建
一.SVN服务器搭建和使用 1. 首先来下载和搭建SVN服务器,下载地址如下: http://subversion.apache.org/packages.html#windows,进入网址 ...
- Java字节码 小结
Reference javap 基本使用方法 深入理解java字节码 从Java代码到字节码 Java字节码.class文件案例分析 字节码 核心概念 Class文件是8位字节流,按字节对齐.之所以称 ...
- HDU 4666 Hyperspace (最远曼哈顿距离)
Hyperspace Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Tota ...
- ceph 底层代码分享
一.底层工作队列 二.对象操作 三.上下文(Context)代码分析:
- 【Windows】查看Windows上运行程序的异常日志
任何在windows系统上运行的程序,只要发生异常导致程序异常终止,windows都会在日志中详细记录这个异常.可以在计算机管理中查看,如图:也可以在操作中心查看,如图:
- curl重写php file_get_contents
file_get_contents在连接不上的时候会提示Connection refused,有时候会带来不便:另外,curl的性能比file_get_contents高,所以用curl重写file_ ...
- Mac下必备快捷键的符号所对应的按键
Mac下快捷键的符号所对应的按键 ⌥—> option|alt ⇧—>shift ⌃—>control ⌘—>command ⎋—>esc 注: 与F6/F7/F12等F ...
- Nginx 设置域名转向配置
#运行用户 #user www-data; #启动进程,通常设置成和cpu的数量相等 worker_processes 2; #全局错误日志及PID文件 error_log logs/error.lo ...
- SNF快速开发平台WinForm-CS甘特图
我们在做项目当中会经常用到按时间进度查看任务,其通过条状图来显示项目,进度,和其他时间相关的系统进展的内在关系随着时间进展的情况. 甘特图包含以下三个含义: 1.以图形或表格的形式显示活动: 2.通用 ...
- 使用jmeter往指定文件中插入一定数量的数据
有一个需求,新建一批账号,把获取的账号相关信息存入文本文件,当文本文件保存的数据达到一定的数量,就自动停止新建账号. 分析下需求: 1.把账号信息保存到文件,需要使用bean shell脚本(bean ...